C++ 向量的向量声明

3

我不太确定这行代码的作用。

 vector<vector<A>> someth;

这是否意味着创建一个带有类A对象的向量元素向量?能否有人解释一下?
谢谢。

http://stackoverflow.com/questions/8660303/c-creating-vector-of-vectors - Martin Beckett
4个回答

8

是的。

还要注意,在C++11之前不支持您的语法:

vector<vector<A> > someth;

这是C++11之前的语法。在此之前,>>被视为位移操作符,因此在某些编译器上会出现编译错误。

实际上,这创建了一个可以包含类型为vector<A>对象的空vector


细节很小,但我认为C++0x中的语法是可以接受的? - helloworld922
@cuihongzhi C++0x是C++11的前身。 - Luchian Grigore
1
@helloworld922 他们原本预计会在2010年之前完成标准,所以将其称为(20)0x。但是他们错了。 - Mark Ransom

4

是的,这创建了一个元素为A对象的向量的元素为向量的向量。值得注意的是,此声明仅在C++11中有效。在此之前,>>被解释为符号>>(读取自)。它需要声明为vector<vector<A> > someth;(带有空格)。


3
正确。基本上是这样的。
someth[i]

返回一个向量。同时,
someth[i][j]

返回A。

需要注意的一点是,在两个'>'之间必须有一个空格。应该是

vector<vector<A> > someth;

空格只在C++11之前的编译器中是必需的。 - Luchian Grigore

1

是的,那正是它的意思,这是 A 的向量的向量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接