lsmCC 发表于 2023-10-13 23:43:32

c++中map的详细用法

对map函数还有很多不会用

isdkz 发表于 2023-10-13 23:44:14

在C++中,map是一种关联式容器,它提供了一种将键映射到值的方法。以下是map的详细用法:

1. 包含头文件

首先,需要包含头文件<map>。

2. 定义map变量

定义一个map变量,可以使用以下语法:

std::map<key_type, value_type> map_name;


其中,key_type是键的数据类型,value_type是值的数据类型,map_name是map变量的名称。

例如,定义一个存储字符串为键、整数为值的map变量:

std::map<std::string, int> my_map;


3. 插入元素

可以使用insert()函数向map中插入元素。insert()函数的参数是一个std::pair对象,该对象包含要插入的键和值。

例如,向上面的my_map变量中插入一个键为"apple",值为5的元素:

my_map.insert(std::make_pair("apple", 5));


4. 访问元素

可以使用下标运算符[]或find()函数访问map中的元素。下标运算符[]返回与指定键相关联的值,如果该键不存在,则插入一个具有该键的新元素。

例如,访问键为"apple"的值:

int value = my_map["apple"];


或者,使用find()函数访问键为"apple"的值:

auto iter = my_map.find("apple");
if (iter != my_map.end()) {
    int value = iter->second;
}


5. 删除元素

可以使用erase()函数删除map中的元素。erase()函数的参数是要删除的键。

例如,删除键为"apple"的元素:

my_map.erase("apple");


以上就是map的基本用法。需要注意的是,map中的元素是按照键的顺序排序的,因此可以使用begin()和end()函数遍历map中的元素。

Mike_python小 发表于 2023-10-13 23:45:12

Map是C++标准库中的关联容器,它提供了一种键-值(key-value)对的映射关系。以下是Map的详细用法:

1. 包含头文件:
首先需要包含<map>头文件。

2. 定义和初始化:
可以通过多种方式来定义和初始化Map。下面是几个例子:


#include <map>

// 定义一个空的Map
std::map<int, std::string> myMap;

// 使用初始化列表创建Map并赋初值
std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};

// 通过插入键-值对来初始化Map
std::map<int, std::string> myMap;
myMap.insert(std::make_pair(1, "one"));
myMap.insert(std::make_pair(2, "two"));
myMap.insert(std::make_pair(3, "three"));


3. 插入元素:
可以使用insert()函数或[]运算符来插入键-值对。


std::map<int, std::string> myMap;

// 使用insert()函数插入键-值对
myMap.insert(std::make_pair(1, "one"));
myMap.insert(std::make_pair(2, "two"));
myMap.insert(std::make_pair(3, "three"));

// 使用[]运算符插入键-值对
myMap = "four";
myMap = "five";


4. 访问元素:
可以使用[]运算符或at()函数来访问Map中的元素。


std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};

// 使用[]运算符访问元素
std::cout << myMap << std::endl;// 输出:one

// 使用at()函数访问元素
std::cout << myMap.at(2) << std::endl;// 输出:two


5. 迭代Map:
可以使用迭代器来遍历Map中的所有键-值对。


std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};

// 使用auto关键字和迭代器进行遍历
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
    std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}


6. 查找元素:
可以使用find()函数来查找指定的键,并返回指向该键的迭代器。如果找不到,find()函数将返回指向末尾元素的迭代器。


std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};

// 使用find()函数查找键为2的元素
auto it = myMap.find(2);
if (it != myMap.end()) {
    std::cout << "Key found, Value: " << it->second << std::endl;
} else {
    std::cout << "Key not found" << std::endl;
}


7. 删除元素:
可以使用erase()函数来删除指定的键或迭代器对应的元素。


std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};

// 删除键为2的元素
myMap.erase(2);

// 使用迭代器删除元素
auto it = myMap.find(3);
if (it != myMap.end()) {
    myMap.erase(it);
}


这些是Map的一些常用操作和用法。希望对你有所帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: c++中map的详细用法