C ++向量的大小无效

时间:2016-10-06 12:48:29

标签: c++ vector

给出以下代码:

#include <vector>
std::vector<int> intVec;
intVec.reserve(5);
intVec[0] = 1;
std::cout << "intVec Size: " << intVec.size();

为什么intVec.size()返回无效大小0?我该如何解决这个问题?我不想使用push_back而且也不想使用5个元素对向量进行零初始化。

编辑:intVec[0] = 1之后矢量的大小应为1。

1 个答案:

答案 0 :(得分:2)

根据你不明智的问题,我猜你希望向量将[] operator视为“如果存在则编辑,如果不存在则创建”。有些事情比如[] operatorstd::map的行为,例如..

你只是不能。它不是这样设计的。

顺便说一下,你可能会做这样的事情:(这是个坏主意。不要。)

int& funky_operator(std::vector<int>& vec, const std::size_t index){
    if(index<vec.size()){
        vec.resize(index+1);
    }
    return vec[index];
}
int main(){
    std::vector<int> intVec;
    intVec.reserve(5);
    funky_operator(intVec,0) = 1;
    std::cout << "intVec Size: " << intVec.size();
}

同样,这是愚蠢的代码。不要在现实生活中使用。但是,这就是你想要的。