std::pair std::map std::set
时间: 2025-01-23 09:05:16 浏览: 41
### C++ STL 中 `std::pair`、`std::map` 和 `std::set` 的用法
#### 使用 `std::pair`
`std::pair` 是一种模板类,用于组合两个不同类型的对象。它通常用来作为其他容器中的元素。
```cpp
#include <iostream>
#include <utility> // For std::pair
int main() {
// 创建 pair 对象
std::pair<int, double> p1(10, 3.14);
// 访问成员 first 和 second
std::cout << "First element: " << p1.first << ", Second element: " << p1.second << '\n';
}
```
#### 使用 `std::map`
`std::map` 实现了一个关联数组的数据结构,键值对按照键自动排序。每个键都是唯一的。
```cpp
#include <iostream>
#include <map>
void printMap(const std::map<std::string, int>& m) {
for (const auto& elem : m) {
std::cout << "{" << elem.first << ": " << elem.second << "}\n";
}
}
int main() {
// 定义 map 并插入一些元素
std::map<std::string, int> age_map;
age_map["Alice"] = 25;
age_map.insert(std::make_pair("Bob", 30));
// 查找特定 key 是否存在
if (age_map.find("Charlie") == age_map.end()) {
std::cout << "Charlie not found.\n";
}
// 遍历整个映射表
printMap(age_map);
// 删除某个条目
age_map.erase("Alice");
printMap(age_map);
}
```
#### 使用 `std::set`
`std::set` 提供了一种有序集合的实现方式,不允许重复项。内部通过红黑树来维护顺序特性。
```cpp
#include <iostream>
#include <set>
void displaySetElements(const std::set<int>& s) {
for (auto it = s.begin(); it != s.end(); ++it)
std::cout << *it << ' ';
std::cout << "\n";
}
int main() {
// 初始化 set
std::set<int> numbers_set;
// 插入新元素到 set 中
numbers_set.insert(7);
numbers_set.emplace(3);
numbers_set.insert({9, 5});
// 输出所有元素
displaySetElements(numbers_set);
// 尝试再次添加已存在的元素不会改变原有状态
bool inserted = numbers_set.insert(7).second;
std::cout << "Insertion of duplicate value returned: " << inserted << "\n";
// 移除指定元素
size_t removed_count = numbers_set.erase(3);
std::cout << "Number of elements erased: " << removed_count << "\n";
// 展示最终结果
displaySetElements(numbers_set);
}
```
阅读全文
相关推荐



















