给出以下代码:
#include <vector>
std::vector<int> intVec;
intVec.reserve(5);
intVec[0] = 1;
std::cout << "intVec Size: " << intVec.size();
为什么intVec.size()
返回无效尺寸0?我该如何解决该问题?我不想使用它push_back
,也不想用5个元素对向量进行零初始化。
编辑:向量的大小应在1之后intVec[0] = 1
。
从您的不稳定问题,我可以猜测您希望向量将其[] operator
视为“如果存在则进行编辑,或者如果不存在则进行创建”。有些东西一样的行为[] operator
中std::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();
}
同样,这是愚蠢的代码。请勿在现实生活中使用。但是,这就是您想要的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句