首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

STL之关联式容器map(二)

本文续:STL之关联式容器map(一) 3构造元素 emplace() 可以在适当的位置直接构造新元素,从而避免复制和移动操作。 当容器中现有元素的键与这个元素的键不同时,才会构造这个元素。...用 size() 成员函数来获取 map 中对应元素的数量来检查 map 元素增加的数量。...\n"; 4.获取元素 获取 map 容器的开始和结束迭代器以及反向迭代器,它们都可以访问容器中的所有元素。 map 的成员函数 at() 返回的是参数键对应的对象。...不能在 map 容器中保存重复的键,但是可以将键关联到封装了多个名言的对象上。...6删除元素 map 的成员函数 erase() 可以移除键和参数匹配的元素,然后返回所移除元素的个数。

52720

高效的使用stl::map和std::set

1、低效率的用法 // 先查找是否存在,如果不存在,则插入 if (map.find(X) == map::end()) // 需要find一次 {     map.insert(x); // 需要find...一次 } // 下面这段代码是一个意思 if (0 == map.count(X) // 需要find一次 {     map.insert(x); // 需要find一次 } // 或者是先判断是否存在...,如果不存在则插入,反之如果存在则修改 if (map.count(X) > 0) // 需要find一次 {     map.erase(X); // 需要find一次 } map.insert(x)...; // 需要find一次 // 对于erase存在同样低效的用法 if (map.count(X) > 0) // 需要find一次 {     map.erase(X); // 需要find一次 }...else {     // 不存在时的处理 } 2、高效率的用法 // 解决办法,充分利用insert和erase的返回值,将find次数降为1 map::size_type num_erased =

2.9K20

C++中的STLmap用法详解

MapSTL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候...3、使用map使用map得包含map类所在的头文件#include   //注意,STL头文件没有扩展名.hmap对象是模板类,需要关键字和存储对象两个模板参数:std:map,如果要从大到小排序呢,这里涉及到的东西很多,在此无法一一加以说明。...还要说明的是,map中由于它内部有序,由红黑树保证,因此很多函数执行的时间复杂度都是log2N的,如果用map函数可以实现的功能,而STL Algorithm也可以完成该功能,建议用map自带函数,效率高一些

2.6K20

C++ STL容器之map容器快速入门

因此引进map容器。 map容器可以将任何类型(包括STL容器)映射到任何类型(包括STL容器)。...注意:(1)若是字符串映射到整型,则必须用string而不能用char数组,如map mp; (2)若键也是STL容器(STL容器嵌套),则需要在>>后加上空格(C++11之前标准的编译会将其视为移位操作...STL容器的使用方式不同。...(2)C++11标准还增加了unordered_map,以散列替代map内部的红黑树实现,使其可以用来处理值只映射而不按key排序的需求,速度比map快很多。...版权所有:可定博客 © WNAG.COM.CN 本文标题:《C++ STL容器之map容器快速入门》 本文链接:https://wnag.com.cn/298.html 特别声明:除特别标注,本站文章均为原创

91410

C++STL——map与set的模拟实现

map与set的部分源码参考 map和set的底层都是由红黑树实现的。 所以这里将上次实现的红黑树插入拿来用。 首先想一想,搜索二叉树不能修改值,因为会破坏整棵树的平衡。...set与map的部分源码: class set { public: // typedefs: typedef Key key_type; typedef Key value_type;...要传入的值是pair 那么,这里完全可以区分传入的是set还是map,为什么要给红黑树传入第一个模板参数呢?...第一个模板参数是用来查找的,因为无论是set还是map都是用kay去查找的。..._node; } }; 迭代器难的是++和- -操作: 原来stl中的红黑树其实有一个哨兵位的头结点: 哨兵位中还有两个指针分别指向红黑树中的最小值和最大值,但是这里我并没有去实现这个哨兵位

52620
领券