📅  最后修改于: 2023-12-03 14:39:50.956000             🧑  作者: Mango
C++ STL(Standard Template Library)提供了许多数据结构和算法,其中包括list
容器。list
是一个双向链表,可以动态地添加、删除和移动元素。其中的insert()
函数用于在指定位置插入一个或多个元素。
下面是list
容器的insert()
函数的语法:
iterator insert (iterator position, const T& val);
iterator insert (iterator position, size_type n, const T& val);
template <class InputIterator>
void insert (iterator position, InputIterator first, InputIterator last);
first
和 last
定义。position
:要插入元素的位置,表示一个迭代器。val
:要插入的元素。n
:要插入的相同元素的个数。first
、last
:要插入范围内元素的起始和结束迭代器。插入元素后的迭代器。
以下示例演示了如何使用list.insert()
函数:
#include <iostream>
#include <list>
int main() {
std::list<int> mylist{1, 2, 3, 4, 5};
// 插入单个元素
std::list<int>::iterator it = mylist.begin();
++it; // 将迭代器指向第2个元素
mylist.insert(it, 10);
// mylist: {1, 10, 2, 3, 4, 5}
// 插入多个相同元素
it = mylist.begin();
++it; // 将迭代器指向第2个元素
mylist.insert(it, 3, 20);
// mylist: {1, 20, 20, 20, 10, 2, 3, 4, 5}
// 插入范围内元素
std::list<int> newlist{7, 8, 9};
it = mylist.begin();
++it; // 将迭代器指向第2个元素
mylist.insert(it, newlist.begin(), newlist.end());
// mylist: {1, 7, 8, 9, 20, 20, 20, 10, 2, 3, 4, 5}
return 0;
}
insert()
函数时,要注意保证迭代器的有效性。在插入元素后,之前的迭代器可能会失效。list
的大小超过其最大限制(由底层实现决定),则会引发length_error
异常。list.insert()
函数提供了在指定位置插入元素的多种方式。它是使用C++ STL中list
容器的关键方法之一,可以方便地扩展链表中的元素。请确保在使用insert()
函数时,仔细阅读相关文档,并根据具体需求选择正确的语法形式。