📅  最后修改于: 2023-12-03 14:59:45.121000             🧑  作者: Mango
在 C++ 标准库中,map 是一个非常常用的容器,它使用一对键-值(key-value)来存储和访问元素。为了方便操作,map 提供了迭代器(iterator)来遍历容器中的每个元素。本文将介绍如何使用 C++ map 迭代器。
在使用迭代器之前,我们需要先定义一个 map,并向其中插入若干个元素。以下代码展示了如何定义一个字符串到整数的 map,并向其中插入三个键-值对:
#include <map>
#include <iostream>
using namespace std;
int main() {
map<string, int> my_map;
my_map["apple"] = 1;
my_map.insert(make_pair("banana", 2));
my_map.insert(pair<string, int>("orange", 3));
return 0;
}
C++ map 提供了两种迭代器:begin() 和 end(),它们分别代表 map 中的第一个元素和最后一个元素的下一个位置。以下代码定义了一个迭代器 my_iterator,指向 my_map 中的第一个元素:
map<string, int>::iterator my_iterator = my_map.begin();
Map 迭代器提供了多种方法来遍历容器中的元素,其中最常用的方法包括:
以下代码展示了如何使用 for 循环遍历 map:
for(map<string, int>::iterator it = my_map.begin(); it != my_map.end(); ++it) {
cout << it->first << " " << it->second << endl;
}
以上代码中,it 是一个迭代器,it->first 和 it->second 分别代表 map 中的键和值。注意,迭代器有两种访问元素的方式:it-> 和 (*it)。
以下代码展示了如何使用 while 循环遍历 map:
map<string, int>::iterator it = my_map.begin();
while(it != my_map.end()) {
cout << it->first << " " << it->second << endl;
++it;
}
以下代码展示了如何使用基于迭代器的 for 循环遍历 map:
for(auto it : my_map) {
cout << it.first << " " << it.second << endl;
}
以上代码实现了 C++11 中的 auto 关键字来自动推断迭代器的类型。
由于 map 通过键-值存储元素,因此我们可以通过修改迭代器所指向的元素的键或值,来修改 map 中元素的值。
以下代码展示了如何通过迭代器修改 map 中元素的值:
map<string, int>::iterator it = my_map.find("banana");
it->second = 4;
for(auto it : my_map) {
cout << it.first << " " << it.second << endl;
}
以上代码通过迭代器 find() 函数找到了键为 "banana" 的元素,并通过迭代器修改了其值为 4。
C++ map 提供了 erase() 函数,用于删除 map 中的元素。以下代码展示了如何使用迭代器删除 map 中的元素:
map<string, int>::iterator it = my_map.find("banana");
my_map.erase(it);
for(auto it : my_map) {
cout << it.first << " " << it.second << endl;
}
以上代码通过迭代器 find() 函数找到了键为 "banana" 的元素,并通过 erase() 函数删除了该元素。
本文介绍了 C++ map 迭代器的使用方法,包括定义迭代器、遍历 map、修改元素的值和删除元素等。熟练掌握 map 迭代器的使用方法,将能更加高效地操作 map 容器中的元素。