c++ - vector 的初始化 vector

标签 c++ c++11 vector

是下面的代码

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

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

它使用 MSVS 2010 进行编译并给出一个大小为 3 的 vector ,其中每个元素都是一个大小为 5 的 vector 。它无法使用 MSVS 2013 和 MSVS“14”进行编译。

最佳答案

std::vector 的单参数大小构造函数是明确的,所以只是 5不会工作,因为它不能隐式转换为 std::vector<int> .你需要这个:

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

自 C++98 以来,情况一直如此,此后一直没有改变(尽管实际构造函数签名在默认参数方面发生了变化;请参阅 cppreference entry 了解签名的历史)。

关于c++ - vector 的初始化 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26566840/

相关文章:

c++ - 在 header 中声明 sqlite::database db (":memory:") 会出错

c++ - std::array、std::vector 和原始数组的大小

c++ - 任何令人满意的迭代器递归来替换类型为$ a [i] = b [i] * c [i] $的for循环

C# - 从整数位掩码构造信号 Vector<T>

c++ - 将数组分配给 std::vector 会给出不正确的输出

C++ 将字节写入串行流

c++ - 这个 pow() 函数在 while 循环 C++ 中发生了什么?

c++ - 为什么std::cout无法为我的int8_t数字输出正确的值?

c++ - 线程局部变量的初始化顺序

c++ - 如何在编译期间计算数组大小(不接受指针)?