Tôi muốn xác định một cái gì đó giống nhưCharacter Array như một giá trị trong C++ đồ
Map<int, char[5] > myMap;
Việc kê khai trên được chấp nhận bởi C++ biên dịch và không có lỗi được ném nhưng khi tôi làm điều gì đó như thế này
int main()
{
char arr[5] ="sdf";
map <int, char[5]> myMap;
myMap.insert(pair<int, char[5]>(0,arr));
return 0;
}
tôi nhận được lỗi như:
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
Điều quan trọng là đối với tôi để xác định một mảng nhân vật kích thước cố định becau nó sẽ tối ưu hóa hoạt động của luồng mạng của tôi. Có cách nào để đạt được nó? Tôi không muốn sử dụng char *
hoặc std::string
.
bạn đã cố gắng xác định một 'struct' có chứa a 'char [5]'? – OmnipotentEntity
Tại sao không 'char *' hoặc tốt hơn nhưng 'chuỗi'? –
@OmnipotentEntity, có tôi đã có thể làm điều đó bằng cách làm cho nó một cấu trúc :) Nhưng bạn có thể vui lòng giải thích cho tôi lý do tại sao đã làm cho nó một công việc struct và không phải char [5] chính nó? –