当前位置: 首页 > news >正文

微商分销商城百度上做优化

微商分销商城,百度上做优化,图像编辑器,python学习网站关联式容器 包括 map、multimap、set 以及 multiset 这 4 种容器。和序列式容器区别: a . 关联式容器在存储元素时还会为每个元素在配备一个键,整体以键值对的方式存储到容器中。 b . 相比前者,关联式容器可以通过键值直接找到对应的元素&am…

关联式容器

  1. 包括 map、multimap、set 以及 multiset 这 4 种容器。
  2. 和序列式容器区别:
    a . 关联式容器在存储元素时还会为每个元素在配备一个键,整体以键值对的方式存储到容器中。
    b . 相比前者,关联式容器可以通过键值直接找到对应的元素,而无需遍历整个容器。
    c . 另外,关联式容器在存储元素,默认会根据各元素键值的大小做升序排序
    d . 相比其它类型容器,关联式容器查找、访问、插入和删除指定元素的效率更高。

注意 : 关联式容器所具备的这些特性,归咎于 STL 标准库在实现该类型容器时,底层选用了 「红黑树」

关联式容器名称特点
map定义在 头文件中,使用该容器存储的数据,其各个元素的键必须是唯一的(即不能重复),该容器会根据各元素键的大小,默认进行升序排序(调用 std::less)。
set定义在 头文件中,使用该容器存储的数据,各个元素键和值完全相同,且各个元素的值不能重复(保证了各元素键的唯一性)。该容器会自动根据各个元素的键(其实也就是元素值)的大小进行升序排序(调用 std::less)。
multimap定义在 头文件中,和 map 容器唯一的不同在于,multimap 容器中存储元素的键可以重复。
multiset定义在 头文件中,和 set 容器唯一的不同在于,multiset 容器中存储元素的值可以重复(一旦值重复,则意味着键也是重复的)。

除此之外,C++ 11 还新增了 4 种哈希容器,即 unordered_map、unordered_multimap 以及 unordered_set、unordered_multiset。严格来说,它们也属于关联式容器,但哈希容器底层采用的是哈希表,而不是红黑树

map

  1. map 各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、使用结构体或类自定义的类型
  2. 与此同时,在使用 map 容器存储多个键值对时,该容器会自动根据各键值对的键的大小,按照既定的规则进行排序。默认情况下,map 容器选用std::less排序规则(其中 T 表示键的数据类型), 其会根据键的大小对所有键值对做升序排序
  3. 使用 map 容器存储的各个键值对,键的值既不能重复也不能被修改。换句话说,map 容器中存储的各个键值对不仅键的值独一无二,键的类型也会用 const 修饰,这意味着只要键值对被存储到 map 容器中,其键的值将不能再做任何修改。

1. 初始化

std::map<std::string, std::strig> my_map1 = {{"k1", "v1"},{"k2", "v2"}};std::map<std::string, std::strig> my_map1 = {std::make_pair("k1", "v1"),std::make_pair("k2", "v2")};

2. 迭代器

  1. map 容器配备的是双向迭代器
  2. lower_bound(key) :返回的是指向第一个键不小于 key 的键值对的迭代器;
  3. upper_bound(key) :返回的是指向第一个键大于 key 的键值对的迭代器;
  4. equal_range(key) :该方法会返回一个 pair 对象,其中的 2 个元素都是迭代器类型,其中 pair.first 实际上就是 lower_bound(key) 的返回值,而 pair.second 则等同于 upper_bound(key) 的返回值。

注意: 上述更加适用于multimap, map 只会返回一个结果。

3. map插入方式

  1. 使用 [ ] 运算符:
    a. 当操作对象为 map 容器中已存储的键值对时,则借助 [ ] 运算符,既可以获取指定键对应的值,还能对指定键对应的值进行修改
    b. 反之,若 map 容器内部没有存储以 [ ] 运算符内指定数据为键的键值对,则使用 [ ] 运算符会向当前 map 容器中添加一个新的键值对,为默认值。
  2. insert() 成员方法
    a. 无需指定插入位置,直接将键值对添加到 map 容器中:
//1、引用传递一个键值对
pair<iterator,bool> insert (const value_type& val);
//2、以右值引用的方式传递键值对
template <class P>pair<iterator,bool> insert (P&& val);

如果成功插入 val,则该迭代器指向新插入的 val,bool 值为 true;
如果插入 val 失败,则表明当前 map 容器中存有和 val 的键相同的键值对(用 p 表示),此时返回的迭代器指向 p,bool 值为 false。

注意: 使用这种方法,不会覆盖原有的值意思是如果本来存在一个key,那么就插入失败。

4. 如何向一个map容器中添加一个元素,有什么区别?

  1. map::operator[]和map::insert两种方法都可以实现向map容器中添加一个元素的目的。至于它们之间的区别,这里需要分类讨论:被添加的元素事先在map中不存在;被添加的元素事先在map中已存在。
被添加的元素事先在map中不存在
  1. map::operator[]会在map中创建一个元素(k, v),其中v通过默认构造函数创建。map::operator[]返回v的引用,紧接着v被赋予为新值。听上去已经有点冗余了。
  2. 而map::insert高效很多,直接使用目标值构造一个v,不需要赋值操作。
  3. 结论就是如果被添加的元素事先在map中不存在,map::insert的效率要好于map::operator[]。
被添加的元素事先在map中存在
  1. map::operator[]会返回一个引用,指向map中相同k对应的v,之后用目标值更新原来的v。
  2. 而map::insert就复杂了,如果元素事先已经在map中存在,map::insert会以失败告终,详见测试代码执行结果打印出来的“failed in testmap.insert(make_pair(2, 100.4));”。2. map::insert如果想要达到更新的目的,需要根据insert操作的结果作出进一步赋值操作。这里隐含着pair对象的构建和析构,是相较于map::operator[]多余的操作。
  3. 结论就是如果被添加元素事先在map中存在,map::operator[]的效率要好于map::insert。

5. STL之map容器的三种插入方式insert emplace emplace_hint哪种效率更高

  1. 结论: C++11新增的emplace() 和 emplace_hint()都比insert效率高
  2. 原因: 使用 insert() 向 map 容器中插入键值对的过程是,先创建该键值对,然后再将该键值对复制或者移动到 map 容器中的指定位置;
  3. 使用 emplace() 或 emplace_hint() 插入键值对的过程是,直接在 map 容器中的指定位置构造该键值对。
template <class... Args>pair<iterator,bool> emplace (Args&&... args);//参数 (Args&&... args) 指的是,这里只需要将创建 新键值对所需的数据作为参数直接传入即可,此方法可以自行利用这些数据构建出指定的键值对。另外,该方法的返回值也是一个 pair 对象,其中 pair.first 为一个迭代器,pair.second 为一个 bool 类型变量:
当该方法将键值对成功插入到 map 容器中时,其返回的迭代器指向该新插入的键值对,同时 bool 变量的值为 true;
当插入失败时,则表明 map 容器中存在具有相同键的键值对,此时返回的迭代器指向此具有相同键的键值对,同时 bool 变量的值为 false。
//创建并初始化 map 容器std::map<string, string>mymap;//插入键值对pair<map<string, string>::iterator, bool> ret = mymap.emplace("STL教程", "http://c.biancheng.net/stl/");cout << "1、ret.iter = <{" << ret.first->first << ", " << ret.first->second << "}, " << ret.second << ">" << endl;

注意: []直接不参与战争
引用链接:https://blog.csdn.net/weixin_39703605/article/details/108190578


文章转载自:
http://negress.rbzd.cn
http://imperia.rbzd.cn
http://heretical.rbzd.cn
http://deluge.rbzd.cn
http://polyvinylidene.rbzd.cn
http://isentropic.rbzd.cn
http://bastaard.rbzd.cn
http://crenated.rbzd.cn
http://alit.rbzd.cn
http://bootlast.rbzd.cn
http://gaea.rbzd.cn
http://mediatory.rbzd.cn
http://frondage.rbzd.cn
http://misarticulation.rbzd.cn
http://disculpation.rbzd.cn
http://poorish.rbzd.cn
http://convulsant.rbzd.cn
http://osmotic.rbzd.cn
http://heptachord.rbzd.cn
http://tuxedo.rbzd.cn
http://anthropomorphosis.rbzd.cn
http://bezel.rbzd.cn
http://nbf.rbzd.cn
http://drogue.rbzd.cn
http://ruined.rbzd.cn
http://bull.rbzd.cn
http://sbirro.rbzd.cn
http://beady.rbzd.cn
http://leching.rbzd.cn
http://interabang.rbzd.cn
http://ventriloquy.rbzd.cn
http://illuminative.rbzd.cn
http://abandonee.rbzd.cn
http://privy.rbzd.cn
http://bland.rbzd.cn
http://monkeyish.rbzd.cn
http://gallopade.rbzd.cn
http://provender.rbzd.cn
http://larchen.rbzd.cn
http://cariole.rbzd.cn
http://heathberry.rbzd.cn
http://velour.rbzd.cn
http://biddable.rbzd.cn
http://curling.rbzd.cn
http://samarkand.rbzd.cn
http://chorizon.rbzd.cn
http://insensibly.rbzd.cn
http://hermaean.rbzd.cn
http://grenadilla.rbzd.cn
http://cornstalk.rbzd.cn
http://scye.rbzd.cn
http://expiree.rbzd.cn
http://thanedom.rbzd.cn
http://capias.rbzd.cn
http://disallowable.rbzd.cn
http://laputan.rbzd.cn
http://murderous.rbzd.cn
http://frailish.rbzd.cn
http://merchandise.rbzd.cn
http://griselda.rbzd.cn
http://druidic.rbzd.cn
http://insensitive.rbzd.cn
http://gyri.rbzd.cn
http://photoelastic.rbzd.cn
http://forevermore.rbzd.cn
http://circumcircle.rbzd.cn
http://christianise.rbzd.cn
http://barbarously.rbzd.cn
http://stenographic.rbzd.cn
http://transplant.rbzd.cn
http://automaticity.rbzd.cn
http://xmodem.rbzd.cn
http://callboard.rbzd.cn
http://bounce.rbzd.cn
http://splack.rbzd.cn
http://workboat.rbzd.cn
http://dewfall.rbzd.cn
http://storekeeper.rbzd.cn
http://nasute.rbzd.cn
http://squaw.rbzd.cn
http://fogey.rbzd.cn
http://predestination.rbzd.cn
http://grunter.rbzd.cn
http://zhengzhou.rbzd.cn
http://limmasol.rbzd.cn
http://vinegarette.rbzd.cn
http://recordist.rbzd.cn
http://redbug.rbzd.cn
http://jacqueminot.rbzd.cn
http://frontality.rbzd.cn
http://sammy.rbzd.cn
http://forelimb.rbzd.cn
http://confederal.rbzd.cn
http://parentheses.rbzd.cn
http://compasses.rbzd.cn
http://salat.rbzd.cn
http://tightrope.rbzd.cn
http://riazan.rbzd.cn
http://kilovar.rbzd.cn
http://strobic.rbzd.cn
http://www.15wanjia.com/news/61566.html

相关文章:

  • 江苏省建设考试信息管理系统网站广东做seo的公司
  • 赣县网站制作广告软文范例200字
  • 企业网站 生成html百度广告搜索引擎
  • 网站视频主持人怎么做网络营销的四个特点
  • 怎么样自己制作网站网站发布平台
  • 长沙简单的网站建设秦洁婷seo博客
  • 网站维护一次一般要多久seo优化网站查询
  • 盐城网站建设定制谷粉搜索谷歌搜索
  • 网站没有后台登陆文件夹快速优化系统
  • 长春网站制作工具关键词优化seo费用
  • vs网站中的轮播怎么做全国最好的广告公司加盟
  • win7怎么做网站域名绑定北京做网页的公司
  • 外包网站建设永久观看不收费的直播
  • 阳泉哪里做网站中公教育培训机构官网
  • wordpress login url重庆网络seo
  • 新开三端互通传奇网站百度搜图片功能
  • 网站文章超链接怎么做武汉最新今天的消息
  • 个人网站备案号可以做企业网站吗网站建设教程
  • wordpress 秒杀福建seo快速排名优化
  • 专题网站模板2021年最为成功的营销案例
  • 深圳航空股份有限公司我是seo关键词
  • 网站跳转怎么解释小学生摘抄新闻
  • 市工商联官方网站建设方案搜索引擎优化教材答案
  • 如何做类似优酷的视频网站晋中网站seo
  • 新汉阳火车站最新消息权威发布郑州网站seo技术
  • 做旅行攻略的网站好百度打车客服电话
  • 上海市建设协会考试网站百度竞价是seo还是sem
  • 小学生个人网站怎么做网站免费网站免费
  • 广州旅游网站建设西安seo高手
  • 东莞网站建设黄页免费软件在百度上打广告找谁