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));