std :: vector initializations和typedef

时间:2018-01-29 04:09:55

标签: c++11 c++14 typedef stdvector c++17

我知道如何做到这一点可以这么说:

#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的尺寸限制?

1 个答案:

答案 0 :(得分:3)

是的,这两个片段做同样的事情。但你也可以把它写成一个单行。 vector在该页面上有一个constructor(构造函数(2)),它接受一个计数和一个值,每个元素都将从中复制。

vecInts a(1000, Ints(1000));