std::map

1.例:

map<int,string> m_mapTest;
m_mapTest.insert(make_pair(1,"kong"));
m_mapTest.insert(make_pair(2,"yang"));
m_mapTest.insert(make_pair(1,"hello1"));
m_mapTest.insert(make_pair(3,"hello3"));
m_mapTest.insert(make_pair(2,"hello2"));

map<int,string>::iterator it = m_mapTest.begin();
for(;it!=m_mapTest.end();it++)
{
string sTem = (*it).second;
::OutputDebugString(sTem.c_str());
::OutputDebugString("\n");
}

输出结果:

kong
yang
hello3

 

2.vector和map中的erase方法在linux平台和windows平台下的差异

 std::map<int,float>::iterator itr;

 for(itr = i_f_map.begin(); itr != i_f_map.end(); itr = i_f_map.erase(itr));  // win32可用,linux 不可用

 for(itr = i_f_map.begin(); itr != i_f_map.end(); i_f_map.erase(itr++));     // win32,linux均可用

 linux操作系统下使用itr = map.erase(itr)编译不过去,erase返回值为空。

  

 std::vector<int> vecTestList;

 for(std::vector<int>::iterator it = vecTestList.begin(); it != vecTestList.end(); it = vecTestList.erase(it));  //win32可用,linux可用

 for(std::vector<int>::iterator it = vecTestList.begin(); it != vecTestList.end(); vecTestList.erase(it++));   //win32不可用,linux不可用

 linux操作系统下使用vector.erase(it++);循环删除列表的过程中第一次循环删除没有问题,第二次循环删除会异常。

3.map<,<> >在linux下需要有一个空格

要向`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) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值