Используя C ++ и STL, кто-нибудь знает, как хранить целочисленные массивы как узлы в списке STL или векторе? У меня есть неизвестное количество пар чисел, которые мне нужно хранить, и, исходя из других языков, я сначала подумал о том, чтобы использовать какую-то структуру данных в виде списков или векторов ... но у меня возникают некоторые проблемы. Я на 100% уверен, что я делаю очевидную ошибку C ++ для новичка, и что тот, кто действительно знает язык, один раз посмотрит на то, что я пытаюсь сделать, и сможет уточнить меня.
Итак, вот что я попробовал. Объявление списка так работает:
stl::list<int[2]> my_list;
И тогда я легко могу создать массив из двух элементов, например:
int foo[2] = {1,2};
Это компилируется и работает просто отлично. Однако, как только я пытаюсь добавить foo
в свой список, вот так:
my_list.push_back(foo);
Я получаю целый грубый набор ошибок компилятора, ни одной из которых я действительно не понимаю (мой C ++ - fu почти отсутствует):
/usr/include/c++/4.0.0/ext/new_allocator.h: In member function ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp = int [2]]’:
/usr/include/c++/4.0.0/bits/stl_list.h:440: instantiated from ‘std::_List_node<_Tp>* std::list<_Tp, _Alloc>::_M_create_node(const _Tp&) [with _Tp = int [2], _Alloc = std::allocator<int [2]>]’
/usr/include/c++/4.0.0/bits/stl_list.h:1151: instantiated from ‘void std::list<_Tp, _Alloc>::_M_insert(std::_List_iterator<_Tp>, const _Tp&) [with _Tp = int [2], _Alloc = std::allocator<int [2]>]’
/usr/include/c++/4.0.0/bits/stl_list.h:773: instantiated from ‘void std::list<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = int [2], _Alloc = std::allocator<int [2]>]’
test.cpp:5: instantiated from here
/usr/include/c++/4.0.0/ext/new_allocator.h:104: error: ISO C++ forbids initialization in array new
Так, у кого-нибудь есть идеи относительно того, что я здесь делаю неправильно? Любые указатели (без каламбура) будут наиболее полезными. Разве нельзя хранить массивы в std :: list? Должен ли я использовать структуру? Я просто пропускаю *
или &
где-то?