STL map的用法

    xiaoxiao2021-04-12  35

    map是STL的一个关联容器,它提供一对一的数据处理能力(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值) 一.插入 #include <map> #include <iostream> using namespace std; int main() { pair<map<int, string>::iterator, bool> insert_pair; map<int, string> cls; //1.使用pair插入 insert_pair = cls.insert(pair<int, string>(1, "zhangsan")); insert_pair = cls.insert(pair<int, string>(2, "lisi")); insert_pair = cls.insert(pair<int, string>(2, "wangwu")); //判断是否插入成功 if (insert_pair.second == true) cout<<"id:"<<insert_pair.first->first<<", name:"<<insert_pair.first->second.c_str()<<"插入成功"<<endl; else cout<<"id:"<<insert_pair.first->first<<", name:"<<insert_pair.first->second.c_str()<<"插入失败"<<endl; cout<<"使用pair插入后:"<<endl; for (map<int, string>::iterator iter = cls.begin();iter != cls.end();iter++) cout<<iter->first<<", "<<iter->second.c_str()<<endl; //2.使用value_type插入 cout<<endl<<"使用value_type插入后:"<<endl; cls.insert(map<int, string>::value_type(3, "zhaoliu")); for (map<int, string>::iterator iter = cls.begin();iter != cls.end();iter++) cout<<iter->first<<", "<<iter->second.c_str()<<endl; //3.使用数组下标插入(该方法和前两种的区别是,如果键已经存在,则会覆盖对应的值) cout<<endl<<"使用数组下标插入后:"<<endl; cls[3] = "sunqi"; for (map<int, string>::iterator iter = cls.begin();iter != cls.end();iter++) cout<<iter->first<<", "<<iter->second.c_str()<<endl; return 0; } 二.遍历 #include <map> #include <iostream> using namespace std; int main() { map<int, string> cls; //1.使用正向迭代器遍历 cout<<"正向遍历:"<<endl; cls.insert(pair<int, string>(1, "zhangsan")); cls.insert(pair<int, string>(2, "lisi")); for (map<int, string>::iterator iter = cls.begin();iter != cls.end();iter++) cout<<iter->first<<", "<<iter->second.c_str()<<endl; //2.使用反向迭代器遍历 cout<<endl<<"反向遍历:"<<endl; for (map<int, string>::reverse_iterator iter = cls.rbegin();iter != cls.rend();iter++) cout<<iter->first<<", "<<iter->second.c_str()<<endl; //3.使用数组遍历(有一定的局限性) cout<<endl<<"数组遍历:"<<endl; for (int i = 0; i < cls.size();i++) cout<<i<<", "<<cls[i].c_str()<<endl; return 0; } 三.删除 map<int, string> m; m.insert(pair<int, string>(1, "zhangsan")); m.insert(pair<int, string>(2, "lisi")); m.insert(pair<int, string>(3, "wangwu")); m.insert(pair<int, string>(4, "zhaoliu")); //1.使用迭代器删除一个元素 map<int, string>::iterator iter = m.find(2); m.erase(iter); //2.使用关键字删除一个元素 m.erase(1); //3.删除多个元素 m.erase(m.begin(), m.end()); //4.删除符合条件的元素 //删除字符串中包含"li"的元素(即删除第2和第四个元素) for (map<int, string>::iterator iter = m.begin();iter!=m.end();) { string::size_type index = iter->second.find("li"); if (index != string::npos) iter = m.erase(iter); else iter++; }
    转载请注明原文地址: https://ju.6miu.com/read-667361.html

    最新回复(0)