【发布时间】:2023-04-10 18:42:01
【问题描述】:
我想定义类似的东西
Map<int, char[5] > myMap;
上面的声明被 c++ 编译器接受并且没有抛出错误但是当我做这样的事情时
int main()
{
char arr[5] ="sdf";
map <int, char[5]> myMap;
myMap.insert(pair<int, char[5]>(0,arr));
return 0;
}
我得到错误:
In file included from /usr/include/c++/4.6/bits/stl_algobase.h:65:0,
from /usr/include/c++/4.6/bits/char_traits.h:41,
from /usr/include/c++/4.6/ios:41,
from /usr/include/c++/4.6/ostream:40,
from /usr/include/c++/4.6/iostream:40,
from charMap.cpp:1:
/usr/include/c++/4.6/bits/stl_pair.h: In constructor ‘std::pair<_T1, _T2>::pair(const _T1&, const _T2&) [with _T1 = int, _T2 = char [5]]’:
charMap.cpp:9:42: instantiated from here
/usr/include/c++/4.6/bits/stl_pair.h:104:31: error: array used as initializer
/usr/include/c++/4.6/bits/stl_pair.h: In constructor ‘std::pair<_T1, _T2>::pair(const std::pair<_U1, _U2>&) [with _U1 = int, _U2 = char [5], _T1 = const int, _T2 = char [5]]’:
charMap.cpp:9:43: instantiated from here
/usr/include/c++/4.6/bits/stl_pair.h:109:39: error: array used as initializer
定义一个固定大小的字符数组对我来说很重要,因为它优化了我的网络流操作。有没有办法实现它?我不想使用char * 或std::string。
【问题讨论】:
-
您是否尝试定义一个包含
char[5]的struct? -
为什么不
char *或者更好的string? -
@OmnipotentEntity,是的,我可以通过将其设为结构来做到这一点 :) 但是您能否解释一下为什么将其设为结构而不是 char[5] 本身?
-
@user - 看到这个问题Why declare a struct that only contains an array
-
答案很好,但没有人讨论为什么这样的构造在 c++ 中是不可能的,或者如果 c++ 编译器接受声明,如何使用它?仅从理论上的角度来看。
标签: c++ dictionary std stdmap c++-standard-library