是以下代码
vector<vector<int> > v(3,5);
合法C ++ 98?这是合法的C ++ 11吗?
它使用MSVS 2010进行编译,并给出一个大小为3的向量,其中每个元素都是大小为5的向量。它无法使用MSVS 2013和MSVS&#34; 14&#34;进行编译。
答案 0 :(得分:4)
std::vector
的单参数大小构造函数是显式的,因此只有5
不起作用,因为它不能隐式转换为std::vector<int>
。你需要这个:
std::vector< std::vector<int> > v(3, std::vector<int>(5));
自C ++ 98以来一直如此,并且自那以后没有改变(尽管实际的构造函数签名已经更改了关于默认参数;请参阅cppreference entry以获取签名历史记录)。