#include <iostream>
#include <vector>

int main()
{
    static const unsigned TOTAL = 4;

    std::vector<int> v[TOTAL];

    v[2].push_back(37);

    //std::cout << v.size(); error
    std::cout << v[0].size();
    std::cout << v[2].size();

    return 0;
}

像上面的代码一样用括号将std::vector初始化是否有效?

MSVS和ideone可以很好地进行编译,但是vector困惑了(请参见错误行)。

我知道我可以使用resize,但是这是怎么回事?

最佳答案

您正在创建一个TOTAL大小的 vector 数组。

您需要的是

 std::vector<int> v(TOTAL);

这将使用TOTAL零初始化ints构造一个 vector 。

然后,
std::cout << v.size() << std::endl; // prints 4
std::cout << v[0] << std::endl;     // prints 0

等等。

关于c++ - 使用括号将std::vector创建为默认大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22039931/

10-17 00:31