是下面的代码
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/