c++ vector的大小无效
Size of C++ vector is invalid
给出如下代码:
#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
视为"编辑,如果它存在或创建,如果它不存在"。例如,[] 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();
}
又是一段愚蠢的代码。不要在现实生活中使用。然而,这是你想要的。
相关文章:
- 修改 std::vector 会使迭代器无效吗?
- 为什么通过 vector<reference_wrapper> 的元素删除引用的值<T>不会使向量无效?
- 使用 vector.sort() 的非静态成员函数无效使用
- 如何修复此错误:二进制表达式的操作数无效("std::vector<double>"和"double")?
- 调用 vector.erase() 函数时指针操作无效错误
- shared_ptr在std :: vector中的重新征用无效
- 如何在没有参数列表的情况下定义向量无效使用模板名称 std::vector
- 将 std::vector 收缩以适应对向量本身的引用无效
- 实现 vector 时二进制表达式的操作数无效
- std::vector在filterAcceptsRow内部调用size()后变为无效
- 使用 std::vector 时抽象类类型"Shape"的新表达式无效错误
- std::vector 的替代方案,因为重新分配会使指向元素的指针无效
- std::vector导致指针无效
- 为什么vector::pop_back使迭代器(end()-1)无效
- 为什么std::vector迭代器在重新分配其他向量时无效
- std::vector::erase()是否在擦除时使迭代器无效
- 为什么"int *find(const vector<int> &vec, int value)"会给我一个无效的转换错误?
- c++使用' .reserve() '填充' std::vector '作为防止多线程缓存无效和错误共享的一种方
- c++ vector的大小无效
- 在c++中循环vector会导致无效的迭代