初始化矢量矢量

时间:2014-10-25 20:18:52

标签: c++ c++11 vector

是以下代码

vector<vector<int> > v(3,5);

合法C ++ 98?这是合法的C ++ 11吗?

它使用MSVS 2010进行编译,并给出一个大小为3的向量,其中每个元素都是大小为5的向量。它无法使用MSVS 2013和MSVS&#34; 14&#34;进行编译。

1 个答案:

答案 0 :(得分:4)

std::vector的单参数大小构造函数是显式的,因此只有5不起作用,因为它不能隐式转换为std::vector<int>。你需要这个:

std::vector< std::vector<int> > v(3, std::vector<int>(5));

自C ++ 98以来一直如此,并且自那以后没有改变(尽管实际的构造函数签名已经更改了关于默认参数;请参阅cppreference entry以获取签名历史记录)。