📅  最后修改于: 2023-12-03 15:37:34.991000             🧑  作者: Mango
在C++中,映射数据结构是通过STL中的map
类来实现的。映射是一种通过键/值对来存储和访问元素的数据结构。每个元素都由一个唯一的键来标识,并且可以通过键来访问其相应的值。
要创建一个映射,需要使用map
类,并指定键和值的类型。例如,下面创建了一个从字符串到整数的映射:
#include <map>
#include <string>
std::map<std::string, int> myMap;
可以使用insert
方法向映射中插入元素,该方法需要一个std::pair
对象,其中第一个元素是键,第二个元素是值。例如,我们可以添加一个键为“apple”,值为20的元素:
myMap.insert(std::make_pair("apple", 20));
可以使用下标运算符[]
来访问映射中的元素。例如,下面的代码将返回键为“apple”的值:
int value = myMap["apple"];
如果要访问映射中不存在的键,则会在访问时自动创建一个新元素。例如,下面的代码将将创建一个新的键/值对 "banana"
/0
:
int value = myMap["banana"];
可以使用at
方法来访问映射中的元素,这种方法比使用下标运算符更安全,因为如果指定的键在映射中不存在,则会抛出一个std::out_of_range
异常。例如,下面的代码将在键为“apple”不存在时引发异常:
int value = myMap.at("apple");
可以使用begin
和end
方法来迭代遍历映射中的元素。例如,以下代码将遍历整个映射,并将每个键和值打印到控制台:
for (auto itr = myMap.begin(); itr != myMap.end(); ++itr) {
std::cout << itr->first << ": " << itr->second << std::endl;
}
可以使用find
方法查找映射中的元素,并返回指向该元素的迭代器。如果指定的键不存在,则方法将返回end()
迭代器。例如,下面的代码将查找键为“apple”的元素,并将其值存储在value
变量中:
auto itr = myMap.find("apple");
if (itr != myMap.end()) {
int value = itr->second;
}
可以使用erase
方法从映射中删除元素,该方法需要指定要删除的键。例如,下面的代码将删除键为“apple”的元素:
myMap.erase("apple");
可以使用clear
方法从映射中删除所有元素:
myMap.clear();
通过map
类实现的映射数据结构提供了一种将键和值关联起来的方法。它可以方便地插入、访问、迭代、查找和删除元素。如果需要将元素按键排序,则可以使用std::map
或std::multimap
类。如果需要支持无序映射,则可以使用std::unordered_map
或std::unordered_multimap
类。