2012-03-03 2 views
3

Я не уверен, что делает эта строка кода.Объявление вектора вектора вектора C++

vector<vector<A>> someth; 

Означает ли это, что создает вектор с векторами элементов с объектами класса A? Может ли кто-нибудь объяснить это?

Thanks

+0

http://stackoverflow.com/questions/8660303/c-creating-vector-of-vectors –

ответ

8

Да.

отметить также, что ваш синтаксис не поддерживается до того C++ 11:

vector<vector<A> > someth; 

является Преждеосвященных-C++ 11 синтаксис. До этого >> рассматривался как оператор бит-сдвига, поэтому вы получили ошибку компилятора для некоторых компиляторов.

Это фактически создает пустой vector, который может содержать объекты типа vector<A>.

+0

маленькая деталь, но я думал, что синтаксис был приемлемым в C++ 0x? – helloworld922

+0

@ helloworld922 C++ 0x - C++ 1. –

+0

Ах, хорошо. Справедливо. – helloworld922

4

Да, это создает вектор, элементы которого являются векторами, элементами которых являются объекты A. Стоит отметить, что это объявление действует только в C++ 11. До этого >> был интерпретирован как символ >> (читайте). Он должен быть объявлен vector<vector<A> > someth; (с пробелом).

1

да, это именно то, что это означает, это вектор векторов А.

3

Исправить. В основном

someth[i] 

возвращает вектор. И

someth[i][j] 

возвращает A.

Одна вещь необходимо обратить внимание на то, что там должно быть пространство между двумя «>» s. Должно быть

vector<vector<A> > someth; 
+0

Пространство необходимо только для компиляторов pre-C++ 11. –

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