C++ 将值放入std::vector中的空位置

C++ 将值放入std::vector中的空位置,c++,c++17,C++,C++17,我有这个方法 public:void reservemory(int start,i32空格){ for(int index=start;index内存.at(索引)=(i32)0; } } 当this->memory.at(index)为空时,会抛出一个错误。当索引为空时,如何将值放入该位置 注: 这个->内存是一个std::vector i32是int32_t并用typedef int32_t i32定义 这是一节课 异常消息: Test.Exe中0x000的FFE4E8CD75中的未

我有这个方法

public:void reservemory(int start,i32空格){
for(int index=start;index内存.at(索引)=(i32)0;
}
}
this->memory.at(index)
为空时,会抛出一个错误。当索引为空时,如何将值放入该位置

注:

  • 这个->内存
    是一个
    std::vector
  • i32
    int32_t
    并用
    typedef int32_t i32定义
  • 这是一节课
异常消息:

Test.Exe中0x000的FFE4E8CD75中的未处理异常:微软C++异常:STD::Outin在内存位置的范围。< /P>


您不需要循环,只需要到向量:

void reserveMemory(int start, i32 space) {
    memory.resize(start + space);
}
创建的新元素将被零初始化


请注意,这种情况会导致函数名(
reservemory
)错误,因为实际上没有内存,但实际上会调整向量的大小。保留和调整大小在语义上是不同的。

这个->内存替换你的循环。调整大小(开始+空格)
?我需要把
(i32)0
。写下来,今天就到此为止@Some程序员伙计,如果我这样做
对象。保留内存(0,5);std::cout memory.at(2)@maDeveloper是的,没错。顺便说一句,
resizeMemory
是虚拟机的内存,而不是实际内存。总之,它工作了。谢谢你,某个程序员。