std::vector 初始化和类型定义
std::vector initializations and typedefs
可以这么说,我知道如何做到这一点:
#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 );
}
}
我的问题是 2nd 代码片段是否符合预期,它是否等同于 1st 代码片段或我错过了什么?
第二个快速问题 1k * 1k
是否超过 std::vector
的大小限制?
是的,这两个片段做同样的事情。但是你也可以把它写成一行。 vector
有一个 constructor(该页面上的构造函数 (2)),它接受一个计数和一个值,每个元素将从中复制构造。
vecInts a(1000, Ints(1000));
可以这么说,我知道如何做到这一点:
#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 );
}
}
我的问题是 2nd 代码片段是否符合预期,它是否等同于 1st 代码片段或我错过了什么?
第二个快速问题 1k * 1k
是否超过 std::vector
的大小限制?
是的,这两个片段做同样的事情。但是你也可以把它写成一行。 vector
有一个 constructor(该页面上的构造函数 (2)),它接受一个计数和一个值,每个元素将从中复制构造。
vecInts a(1000, Ints(1000));