2012-01-09 2 views
0

Я имею в виду не держать указатель на массивеМожно ли хранить в статическом массиве контейнера?

std::vector<int*> vector; 

но

std::vector<int[]> vector; 

Проблема заключается в том, чтобы сохранить такой массив в hash_map для сравнения не указателей при вставке там, но когда я пытаюсь как этот

std::hash_map<std::vector<BYTE>,std::string> xxx 

У меня есть ошибка.

+1

У меня есть трудное понимание вашего вопроса, не могли бы вы его перефразировать? Также обратите внимание, что 'vector ' является точно такой же, как «вектор ». Возможно, вы имели в виду «вектор » (где N - постоянная времени компиляции)? – sepp2k

+1

Хэш-карта в C++ называется 'unordered_map', и это отлично работает для меня:' std :: unordered_map , std :: string> ' –

+1

' std :: unordered_map , std :: string> 'тоже возможен, поскольку массив предположительно статически-размер. – ildjarn

ответ

2

Вы не можете сделать std::vector<int[]> vector. Вы должны указать размер массива для его компиляции следующим образом: std::vector<int[5]> vector.

Однако это плохая идея, потому что вы не можете назначить массивы другим массивам и т. Д., И при попытке использовать вектор вы получите всевозможные ошибки.

Вместо этого используйте vector<vector<int>> vector или в C++ 11 используйте vector<std::array<int, 5>> vector.

Кроме того, я не знаю, какую реализацию hash_map вы используете, поэтому я не знаю, будут ли вышеупомянутые решения работать в вашем случае. (Кроме того, C++ 11 имеет unordered_map, поэтому может быть предпочтительнее)

+0

Что такое C++ 11x? Я знаю C++ 0x и C++ 11 :) – bitmask

+0

@bitmask: Спасибо, исправит. –

+0

так положил мой вектор в другой вектор? –

Смежные вопросы