在vector的下标处插入对象
Insert object at index of vector c++
我需要插入一个对象到现有的对象向量。我知道我需要使用迭代器来完成它,但我不知道它到底是如何工作的。
我有按字母顺序排序的向量,我需要通过它的名字插入新的对象,我得到了一些搜索后的确切索引。所以我有这个
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
相关文章:
- 将包含不可复制对象的对插入到映射中
- 在 std::map 中插入对象时构造函数中变量的地址
- 在 c++ 列表中插入对象
- 在列表C 中插入对象
- 如何创建插入对象使用duktape
- 如何在地图中插入对象以保持其排序
- bad_alloc通过右值和对象有效性插入对象时
- 插入对象以设置c++
- 在地图中插入对象而不复制对象
- C++:使用递归在二叉搜索树中插入对象
- 如何在矢量中高效、正确地插入对象
- vector插入对象的副本或引用
- 我可以插入对象到tr1 unordered_map
- 在ostreams中插入对象
- 如何在指针数组中插入对象
- 在链表中按升序插入对象
- 标记分派结构不能插入对象类型
- 链表-插入对象
- 在vector的下标处插入对象
- 按字母顺序向vector插入对象