正在初始化矢量中的矢量

Initializing vector of vectors

本文关键字:初始化      更新时间:2023-10-16

以下代码是吗

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

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

它与MSVS 2010一起编译,并给出一个大小为3的向量,每个元素都是一个大小5的向量。它无法与MSVS 2013和MSVS"14"一起编译。

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

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

自C++98以来,情况一直如此,自那以后就没有改变过(尽管实际的构造函数签名在默认参数方面发生了变化;有关签名的历史记录,请参阅cpprreference条目)。