C++map 遍历和删除
时间: 2023-11-07 09:55:21 浏览: 91
遍历和删除C++的map可以使用迭代器进行操作。遍历可以使用for循环配合迭代器来实现,删除可以使用erase函数配合迭代器来删除指定元素。需要注意的是,在使用erase函数删除元素时,要注意迭代器的失效问题,所以在删除元素后要对迭代器进行适当的处理,使其指向正确的位置。
以下是C++中遍历和删除map的示例代码:
```cpp
std::map<Key, Value> myMap;
// 遍历map
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
// 使用it访问键值对的键和值
Key key = it->first;
Value value = it->second;
// 进行相应的操作
}
// 删除指定元素
auto it = myMap.find(key); // 找到要删除的元素的迭代器
if (it != myMap.end()) {
myMap.erase(it); // 删除元素
}
```
相关问题
c++ map遍历删除
使用C++中的map容器,可以通过以下代码删除指定key值的元素:
```c++
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
// 删除key为2的元素
myMap.erase(2);
// 遍历map
for (auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
输出结果为:
```
1: one
3: three
```
其中,erase()函数用于删除指定key值的元素,其参数为要删除的key值。在上述代码中,我们删除了key为2的元素,最终输出结果中只剩下了key为1和3的元素。
c++ map 遍历
在C++中,可以使用迭代器、range for循环和C++17的结构化绑定来遍历map。
一种遍历方式是使用迭代器。可以通过使用map的begin()和end()函数来获取map的起始和结束迭代器,然后使用一个循环来迭代访问每个元素。例如,可以使用以下代码进行遍历:
#include <map>
#include <iostream>
int main() {
std::map<int, std::string> mapStudent;
mapStudent = "student_one";
mapStudent = "student_two";
mapStudent = "student_three";
std::map<int, std::string>::iterator iter; // 声明迭代器
for (iter = mapStudent.begin(); iter != mapStudent.end(); iter++) {
std::cout << iter->first << " " << iter->second << std::endl;
}
return 0;
}
另一种遍历方式是使用C++11及以上版本的range for循环。可以直接使用auto关键字来声明一个变量来表示每个键值对,并通过range for循环遍历map。以下是示例代码:
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> mp;
mp["张三"] = 20;
mp["李四"] = 18;
mp["王五"] = 30;
std::cout << "方式一、迭代器" << std::endl;
for (auto it = mp.begin(); it != mp.end(); it++) {
std::cout << it->first << " " << it->second << std::endl;
}
std::cout << "\n方法二、range for" << std::endl;
for (auto it : mp) {
std::cout << it.first << " " << it.second << std::endl;
}
std::cout << "\n方法三" << std::endl;
for (auto [key, val] : mp) {
std::cout << key << " " << val << std::endl;
}
return 0;
}
另外还可以使用简单的for循环和size()函数来遍历map。以下是示例代码:
#include <map>
#include <iostream>
int main() {
std::map<int, std::string> mapStudent;
mapStudent = "student_one";
mapStudent = "student_two";
mapStudent = "student_three";
int iSize = mapStudent.size();
for (int i = 1; i <= iSize; i++) {
std::cout << i << " " << mapStudent[i] << std::endl;
}
return 0;
}
以上是C++中遍历map的几种方式。可以根据实际情况选择合适的方式来遍历map。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [C++中map的遍历](https://blog.csdn.net/chengqiuming/article/details/89815814)[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* [C++ map遍历的几种方式](https://blog.csdn.net/VariatioZbw/article/details/124947520)[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 ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)