c++ map set用法
时间: 2024-06-17 07:01:32 浏览: 19
在C++中,`map`和`set`是两种非常常见的关联容器,它们分别提供了不同的数据存储和访问机制。
1. `map`(也叫关联数组或字典):
- 它是一个键值对的集合,其中每个键都是唯一的,并且按照键的排序存储数据。
- `map`使用`std::map`模板,底层通常使用红黑树实现,提供快速的查找(平均时间复杂度为O(log n))。
- 你可以通过键来访问对应的值,比如`std::map<Key, Value> m;`
- 示例代码:
```cpp
std::map<std::string, int> myMap;
myMap["apple"] = 10;
std::cout << myMap["apple"]; // 输出:10
```
相关问题
c++哈希表unordered_set unordered_map用法
unordered_set和unordered_map都是C++ STL中的哈希表容器,它们的用法如下:
unordered_set用法:
```c++
#include <unordered_set>
using namespace std;
int main() {
unordered_set<int> s; // 定义一个空的unordered_set
s.insert(1); // 插入元素1
s.insert(2); // 插入元素2
s.insert(3); // 插入元素3
s.erase(2); // 删除元素2
if (s.find(1) != s.end()) { // 查找元素1
cout << "Found!" << endl;
}
for (auto x : s) { // 遍历unordered_set
cout << x << " ";
}
return 0;
}
```
unordered_map用法:
```c++
#include <unordered_map>
using namespace std;
int main() {
unordered_map<string, int> m; // 定义一个空的unordered_map
m["apple"] = 1; // 插入键值对"apple":1
m["banana"] = 2; // 插入键值对"banana":2
m["orange"] = 3; // 插入键值对"orange":3
m.erase("banana"); // 删除键为"banana"的键值对
if (m.find("apple") != m.end()) { // 查找键为"apple"的值
cout << "Found!" << endl;
}
for (auto p : m) { // 遍历unordered_map
cout << p.first << ":" << p.second << " ";
}
return 0;
}
```
c++ map 添加元素
要向map容器添加元素,可以通过两种方式实现:
1. 使用insert成员函数:可以使用insert函数将键值对插入到map容器中。例如,使用以下方式向map添加一个键为key,值为value的元素:
map.insert(std::make_pair(key, value));
或者
map.insert({key, value});
注意,如果map中已经存在相同的键,则insert函数不会插入新的元素。
2. 使用下标操作符[]获取元素,然后给获取的元素赋值:可以直接使用下标操作符[]获取map容器中的元素,并为其赋值。例如,使用以下方式向map添加一个键为key,值为value的元素:
map[key = value;
如果map中已经存在相同的键,则该操作将更新该键所对应的值。
需要注意的是,使用下标访问map容器与使用下标访问vector的行为截然不同:用下标访问map中不存在的元素将导致在map容器中添加一个新的元素,这个元素的键即为该下标值,键所对应的值为空。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [c++容器list、vector、map、set区别与用法详解](https://download.csdn.net/download/weixin_38747211/13713865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C++ map容器用法](https://blog.csdn.net/m0_67402096/article/details/126636994)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]