我知道如何做到这一点可以这么说:
#include <vector>
int main() {
// Simple vector of ints = resized to 1k elements
std::vector<int> ints;
ints.resize( 1000 ); // Easy enough
// nested vector of ints 1k vectors each with 1k elements
std::vector<std::vector<int>> vecInts;
vecInts.resize( 1000 );
for ( auto& a : vecInts ) {
a.resize( 1000 );
}
// Again easy enough.
}
现在不要像我想要使用typedefs
#include <vector>
typedef std::vector<int> Ints;
typedef std::vector<Ints> vecInts;
int main() {
vecInts a;
a.resize( 1000 ); // seems okay
// Assuming this would work...
for ( auto& n : a ) {
n.resize( 1000 );
}
}
我的问题是2 nd 代码片段是否符合预期,是否等同于1 st 代码片段,还是我遗漏了某些内容?
第二个快速问题1k * 1k
是否超出std::vector
的尺寸限制?
答案 0 :(得分:3)
是的,这两个片段做同样的事情。但你也可以把它写成一个单行。 vector
在该页面上有一个constructor(构造函数(2)),它接受一个计数和一个值,每个元素都将从中复制。
vecInts a(1000, Ints(1000));