在vector的下标处插入对象

Insert object at index of vector c++

本文关键字:插入 对象 下标 vector      更新时间:2023-10-16

我需要插入一个对象到现有的对象向量。我知道我需要使用迭代器来完成它,但我不知道它到底是如何工作的。

我有按字母顺序排序的向量,我需要通过它的名字插入新的对象,我得到了一些搜索后的确切索引。所以我有这个

vector<Person>people;

int index =54;
Person temp;
people.push_back(temp);//insert at end of vector
people.insert(index, temp);//doesnt work for int

谁能帮助我如何正确地使用迭代器插入我的对象到向量的第54个索引和移动所有以下的对象一个索引?

谢谢你的帮助。

最直接的答案是需要一个迭代器。vector的迭代器支持随机访问,这意味着您可以在迭代器中添加或减去整数值。

people.insert(people.begin() + index, temp);

更好的答案是不要使用索引,使用迭代器。你的循环是什么?你应该能够重构循环,使用迭代器而不是索引。

我有一个按字母顺序排序的向量,我需要按它的名字插入新的对象,在经过一些搜索后,我得到了确切的索引。

如果vector是按字母顺序排序的,那么在保持排序顺序的同时将项插入正确位置的正确方法是使用upper_bound函数:

people.insert(upper_bound(people.begin(), people.end(), temp), temp);

函数搜索排序范围,并返回第一个大于temp的元素的位置。

解决方案:

    vector<Person>::iterator iter = people.begin() + index;
    people.insert(iter, temp);

参考:

  • std::向量:插入()

  • RandomAccessIterator