C++ 容器插入数据
时间: 2024-09-13 07:03:58 浏览: 16
C++ 标准模板库(STL)提供了多种容器,用于存储和管理数据集合。这些容器包括序列容器如 `vector`、`deque` 和关联容器如 `set`、`multiset`、`map`、`multimap` 等。在这些容器中插入数据可以通过不同的成员函数来实现,下面列举了一些常见容器的插入方法:
1. **`std::vector` 和 `std::deque`**:
- 使用 `push_back` 或 `push_front`(对于 `deque`)在容器的末尾或开头插入元素。
- 使用 `insert` 方法可以在指定位置插入一个或多个元素。
- 使用 `emplace` 方法可以在容器中的指定位置直接构造一个元素,这避免了复制或移动操作。
2. **`std::list` 和 `std::forward_list`**:
- 使用 `push_back` 或 `push_front` 在链表的末尾或开头插入元素。
- 使用 `insert` 方法在指定位置插入元素。
- 使用 `emplace` 在指定位置直接构造元素。
3. **关联容器如 `std::set`、`std::multiset`、`std::map` 和 `std::multimap`**:
- 使用 `insert` 方法插入元素,关联容器的 `insert` 可以返回一个包含插入位置和是否成功插入的 pair 对象。
- 关联容器还提供了 `emplace` 方法,用于在容器中直接构造元素。
4. **无序关联容器如 `std::unordered_set`、`std::unordered_map`**:
- 使用 `insert` 方法插入元素,同样返回一个包含是否成功插入的信息的 pair 对象。
- 使用 `emplace` 在容器中直接构造元素。
下面是一个简单的示例,演示如何在 `std::vector` 中插入数据:
```cpp
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec;
// 在末尾插入单个元素
vec.push_back(10);
// 在末尾插入多个元素
vec.insert(vec.end(), {20, 30});
// 在指定位置插入单个元素
vec.insert(vec.begin() + 1, 15);
// 输出所有元素
for (int num : vec) {
std::cout << num << ' ';
}
return 0;
}
```