如何覆盖向量索引指向的项?

时间:2016-10-27 16:08:03

标签: c++ vector indexing std

我想覆盖索引指向的项目,即使该索引尚未存在。 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;

1 个答案:

答案 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