std::map <std::string , std::string>插入元素
时间: 2024-05-19 15:09:06 浏览: 15
std::map<std::string, std::string>是C++ STL库中的一个关联容器,它存储键-值对,其中键和值都是字符串类型。对于插入元素,可以使用insert()函数,它有两种形式:
1. 插入一个键-值对:
```
std::map<std::string, std::string> myMap;
myMap.insert(std::pair<std::string, std::string>("key1", "value1"));
```
2. 插入多个键-值对:
```
std::map<std::string, std::string> myMap;
myMap.insert({
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"}
});
```
在使用insert()函数时需要注意,如果要插入的键已经存在,则该键对应的值会被覆盖。如果不想覆盖已有的键值对,可以使用下标操作符[]进行插入:
```
myMap["key4"] = "value4";
```
相关问题
std::map<std::string,std::map<std::string,std::string>> my_map;如何插入数据
要向`std::map<std::string,std::map<std::string,std::string>>`类型的`my_map`中插入数据,可以按照以下步骤进行操作:
1. 创建要插入的数据项,包括外层`std::string`类型的键和内层`std::map<std::string,std::string>`类型的值。例如,假设要插入的数据项为`key1 -> (inner_key1 -> value1, inner_key2 -> value2)`。
2. 使用`my_map[key1]`来访问外层`std::map`中的键`key1`对应的值,如果该键不存在,则会自动创建一个新的内层`std::map`。
3. 使用内层`std::map`的插入函数,例如`my_map[key1].insert(std::make_pair(inner_key1, value1))`,将内层键值对`(inner_key1, value1)`插入到对应的内层`std::map`中。
4. 重复上述步骤,插入其他内层键值对。
下面是一个示例代码,演示了如何向`my_map`中插入数据:
```cpp
#include <iostream>
#include <map>
#include <string>
int main() {
std::map<std::string, std::map<std::string, std::string>> my_map;
// 创建要插入的数据项
std::string key1 = "key1";
std::string inner_key1 = "inner_key1";
std::string value1 = "value1";
std::string inner_key2 = "inner_key2";
std::string value2 = "value2";
// 插入数据项
my_map[key1].insert(std::make_pair(inner_key1, value1));
my_map[key1].insert(std::make_pair(inner_key2, value2));
// 输出结果
for (const auto& outer_pair : my_map) {
std::cout << outer_pair.first << " -> ";
for (const auto& inner_pair : outer_pair.second) {
std::cout << "(" << inner_pair.first << " -> " << inner_pair.second << ") ";
}
std::cout << std::endl;
}
return 0;
}
```
输出结果为:
```
key1 -> (inner_key1 -> value1) (inner_key2 -> value2)
```
std::list<std::map<std::string, std::string>> 遍历
可以使用嵌套循环来遍历 `std::list<std::map<std::string, std::string>>`。具体实现如下:
```c++
#include <iostream>
#include <list>
#include <map>
#include <string>
int main() {
std::list<std::map<std::string, std::string>> my_list = {
{{"name", "Alice"}, {"age", "20"}},
{{"name", "Bob"}, {"age", "30"}},
{{"name", "Charlie"}, {"age", "40"}}
};
for (const auto& my_map : my_list) {
for (const auto& [key, value] : my_map) {
std::cout << key << ": " << value << std::endl;
}
std::cout << std::endl;
}
return 0;
}
```
这里使用了 C++17 的结构化绑定 (structured binding),可以更方便地获取 map 中的键值对。输出结果为:
```
name: Alice
age: 20
name: Bob
age: 30
name: Charlie
age: 40
```