c++ vector的大小无效

Size of C++ vector is invalid

本文关键字:无效 vector c++      更新时间:2023-10-16

给出如下代码:

#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

从您的不可理解的问题,我可以猜测,您希望向量将[] 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();
}

又是一段愚蠢的代码。不要在现实生活中使用。然而,这是你想要的。