C++ <list> insert 函数
insert 是 list 中用于在指定位置插入元素的函数,是链表最灵活的操作。
insert 是容器类的成员函数,用于在链表的指定位置插入一个或多个元素。
在 list 中,insert 的时间复杂度是 O(1),因为只需要调整指针。
单词释义: insert 表示"插入",即在指定位置添加元素。
基本语法与参数
insert 是容器类的成员函数,需要指定插入位置和元素。
语法格式
iterator insert(iterator pos, const T& value); iterator insert(iterator pos, T&& value); void insert(iterator pos, size_type count, const T& value); template<class InputIt> void insert(iterator pos, InputIt first, InputIt last);
参数说明
- 参数:
pos- 插入位置的迭代器 - 参数:
value- 要插入的元素值
函数说明
- 返回值: 返回指向第一个插入元素的迭代器。
- 效果: 在指定位置插入元素,后续元素依次后移。
实例
示例 1:基础用法 - 插入单个元素
实例
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5};
std::cout << "原始 list: ";
for(int n : numbers) std::cout << n << " ";
std::endl;
// 在第二个位置(迭代器)插入 100
auto it = std::next(numbers.begin(), 1);
numbers.insert(it, 100);
std::cout << "插入 100 后: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5};
std::cout << "原始 list: ";
for(int n : numbers) std::cout << n << " ";
std::endl;
// 在第二个位置(迭代器)插入 100
auto it = std::next(numbers.begin(), 1);
numbers.insert(it, 100);
std::cout << "插入 100 后: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
运行结果预期:
原始 list: 1 2 3 4 5 插入 100 后: 1 100 2 3 4 5
示例 2:插入多个元素
实例
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {1, 5};
std::cout << "原始: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 在中间插入 3 个 0
auto it = numbers.begin();
std::advance(it, 1);
numbers.insert(it, 3, 0);
std::cout << "插入 3 个 0 后: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {1, 5};
std::cout << "原始: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 在中间插入 3 个 0
auto it = numbers.begin();
std::advance(it, 1);
numbers.insert(it, 3, 0);
std::cout << "插入 3 个 0 后: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
运行结果预期:
原始: 1 5 插入 3 个 0 后: 1 0 0 0 5

C++ 容器类 <list>