📜  c++ map iterator - C++ (1)

📅  最后修改于: 2023-12-03 14:59:45.121000             🧑  作者: Mango

C++ Map 迭代器

在 C++ 标准库中,map 是一个非常常用的容器,它使用一对键-值(key-value)来存储和访问元素。为了方便操作,map 提供了迭代器(iterator)来遍历容器中的每个元素。本文将介绍如何使用 C++ map 迭代器。

定义 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

Map 迭代器提供了多种方法来遍历容器中的元素,其中最常用的方法包括:

  • for 循环遍历
  • while 循环遍历
  • 基于迭代器的 for 循环遍历

以下代码展示了如何使用 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 中元素的值:

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。

删除 Map 中的元素

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 容器中的元素。