首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vector的vector(向量的向量)怎么初始化

2013-10-22 
vector的vector(向量的向量)如何初始化?比如我建立了一个class叫做card,然后定义下面的一个vector的vector

vector的vector(向量的向量)如何初始化?
比如我建立了一个class叫做card,然后定义下面的一个vector的vector,

vector<vector<card> > AIcards;
想给它初始化了,因为维数是已经确定了的,于是我想这么做,
vector<vector<card> > AIcards(4)(13);
可是编译的时候会报错,报错信息是:
missing type specifier - int assumed. Note: C++ does not support default-int
这个是什么情况?是我的用法有问题吗?如果是的,应该怎么做呢?
[解决办法]

引用:
比如我建立了一个class叫做card,然后定义下面的一个vector的vector,

vector<vector<card> > AIcards;
想给它初始化了,因为维数是已经确定了的,于是我想这么做,
vector<vector<card> > AIcards(4)(13);
可是编译的时候会报错,报错信息是:
missing type specifier - int assumed. Note: C++ does not support default-int
这个是什么情况?是我的用法有问题吗?如果是的,应该怎么做呢?


vector< vector< card > > AIcards( 4, vector< card >( 13 ) );
[解决办法]
应该是三楼的对 
[解决办法]
引用:
Quote: 引用:


vector< vector< card > > AIcards( 4, vector< card >( 13 ) );


谢谢,真的可以哦!不过我还有一个问题,就是定义了一个

vector< vector< card > > AIcards

后,怎么知道它的两个维数呢?

AIcards.size()就是第一维长度;AIcards[i].size()就是各元素的长度。

如果你的编译器支持C++11,也可以使用象5楼那样的列表初始化。

不过,无论如何,嵌套vector其实是不被推荐的,影响性能,可改为

vector< vector< card >* > AIcards;

更好些。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:


不过,无论如何,嵌套vector其实是不被推荐的,影响性能,可改为

vector< vector< card >* > AIcards;

更好些。


后面的这个与原来的有什么区别呢?

STL是通过值语义复制的,元素为类会增加许多构造和析构带来的成本,改为指针后,这类成本少多了。

那为什么里面一层不用指针呢?vector< vector<card *> > vec;

热点排行