设为首页 收藏本站
查看: 991|回复: 0

[经验分享] STL容器

[复制链接]

尚未签到

发表于 2017-6-24 16:35:14 | 显示全部楼层 |阅读模式
  核心描述: map 就是从键(key) 到 值(value) 的一个映射.且键值不可重复,内部按照键值排序.
  头文件: #include <map>
  拓展: multimap 是一个多重映照容器,键值可以重复.unordered_set 是一个内部不排序的映射容器,需包含头文件<unordered_map>
  构造方法:



map<int, string> kvm; //构造一个键为 int 型, 值为 string 型的 map
  元素的插入:



kvm[1] = "abc";   // 值 "abc" 在 map 中的键值为 1                                                           ------方法1
kvm.insert (map<int, string> :: value_type(2, "def")); // 值 "def" 在 map 中的键值为 2         ------方法2
  利用 find 查找:



map<int, string> :: iterator it;//定义迭代器
it = kvm.find(2);  //find 只能根据键查找,且find函数返回的是迭代器.
if (it == kvm.end())  cout << "Not Found" <<endl;
else cout << it->first << " " << it->second << endl; //利用 first 和 second 访问键 和 值.
  利用 count 查找:



int cnt = kvm.count(2);  //count 按照查找的 键 返回找到的个数.由于不重复即只能返回 0 或 1
  根据键访问值:



string ss = kvm[1]  //map 根据要访问的 "键" 返回 "键对应的值", 需要用 find 或者 count 判断 "键" 是否存在
  map 的删除:



it = kvm.find(1);   
kvm.erase(it);    //利用 find 找到键为 1的位置, 再通过迭代器删除元素          ---------方法1
kvm.erase(1)     //删除键为 1 的元素, 成功返回 ”1“ 否则返回 ”0“           ---------方法2
kvm.erase( kvm.begin(), kvm.end() );    //通过迭代器区间性删除, 区间为前闭后开   ---------方法3
  常用操作:



kvm.clear()        //清空 map
kvm.empty()    //判断 map 是否为空
kvm.size()        //返回 map 中元素的个数
  其他查找函数:



map<int, string> :: it;
it = lower_bound(key);   //返回键值 大于等于 给定键值的第一个位置
it = upper_bound(key);  //返回键值    大于     给定键值的第一个位置
  结构体类型的构造:



struct NODE{
int x; int y;
bool operator < (const NODE& a) const{
if(x == a.x) return y > a.y;//二级排序为 y 的降序
return x < a.x; //以及排序为 x 的升序
    }
};
map<NODE, string> kvm; //必须重载结构体的 “<"
  map 的遍历:



map<int, string>::iterator it;
for(it = kvm.begin(); it != kvm.end(); it++) {
cout << it -> first  << "   " << it -> second << endl;
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-387585-1-1.html 上篇帖子: python报错问题解决:'ascii' codec can't encode character 下篇帖子: 虚拟化类型 层次关系
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表