我想覆盖索引指向的项目,即使该索引尚未存在。 operator []一直运行直到它没有超出范围。 emplace似乎这样做,但它需要第一个参数的迭代器。我可以使用myvector.begin()+ index但当向量为空时它无效。
澄清。我目前的实施:
while (index < myvector.size())
myvector.push_back("");
myvector[index] = val;
我希望有一个std方法。数组总是非常小(少数元素)。
使用接受的答案,我的代码更改为:
if (index >= myvector.size()) // to avoid destroying the remaining elements when the index is smaller than current size
myvector.resize(index+1);
myvector[index] = val;
答案 0 :(得分:3)
要覆盖给定索引的元素,该索引必须位于有效向量范围内。
您可以使用vector::resize
将矢量的大小设置为任意值,只需使用范围为operator[]
的索引[0, size-1]
:
std::vector<std::string> data;
...
data.resize(100);
// Use data[i] for i = 0,1,2,...99