使用括号创建std :: vector以获取默认大小

rel*_*xxx 1 c++ vector

#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;
}
Run Code Online (Sandbox Code Playgroud)

是否可以std::vector像上面的代码一样使用括号进行instatnitate ?

MSVS和ideone编译得很好,但是向量混乱了(参见错误行).

我知道我可以使用resize,但这里发生了什么?

jua*_*nza 5

您正在创建一个TOTAL大小的向量数组.

你需要的是什么

 std::vector<int> v(TOTAL);
Run Code Online (Sandbox Code Playgroud)

这构造了一个TOTAL零初始化的向量ints.

然后,

std::cout << v.size() << std::endl; // prints 4
std::cout << v[0] << std::endl;     // prints 0
Run Code Online (Sandbox Code Playgroud)

等等.