【C++】STL概念及快速入门_c++ map容器3种插入键值对的方法,谁的效率更高-程序员宅基地

技术标签: C/C++  c++  开发语言  

  • STL 是 C++ 标准库的一部分。
  • STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。
  • C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,包含了诸多常用的基本数据结构和基本算法,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。
  • STL有六大组件,但主要包含容器、迭代器和算法三个部分。

    • 容器(Containers):用来管理某类对象的集合。每一种容器都有其优点和缺点,所以为了应付程序中的不同需求,STL 准备了七种基本容器类型。
    • 迭代器(Iterators):用来在一个对象集合的元素上进行遍历动作。这个对象集合或许是个容器,或许是容器的一部分。每一种容器都提供了自己的迭代器,而这些迭代器了解该种容器的内部结构。
    • 算法(Algorithms):用来处理对象集合中的元素,比如 Sort,Search,Copy,Erase 那些元素。通过迭代器的协助,我们只需撰写一次算法,就可以将它应用于任意容器之上,这是因为所有容器的迭代器都提供一致的接口。
  • STL提供了三个序列式容器:向量(vector)、双端队列(deque)、列表(list),此外也可以把 stringarray 当做一种序列式容器。
  • STL提供了四个关联式容器:集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)

第1章 STL基础

1. C++ STL是什么,有什么用?

2. C++ STL的发展历程是怎样的?

3. C++ STL版本有哪些?

4. 熟练使用STL标准库是每个C++程序员的必备技能!

5. 泛型是什么,C++泛型编程又是什么?

6. C++ STL基本组成(6大组件+13个头文件)

7. 如何衡量一个算法的执行效率?

8. GNU开源精神及其发展历程

第2章 STL序列式容器

1. C++ STL容器是什么?

2. 迭代器是什么,C++ STL迭代器(iterator)用法详解

3. C++序列式容器(STL序列式容器)是什么

4. C++ array(STL array)容器用法详解

5. C++ STL array随机访问迭代器(精讲版)

6. C++ STL array容器访问元素的几种方式

7. C++ array容器:普通数组的“升级版”

8. C++ STL vector容器详解

9. C++ STL vector容器迭代器用法详解

10. C++ STL vector容器访问元素的几种方式

11. C++ vector容量(capacity)和大小(size)的区别

12. 深度剖析C++ vector容器的底层实现机制

13. C++ STL vector添加元素(push_back()和emplace_back())详解

14. C++ STL vector插入元素(insert()和emplace())详解

15. C++ STL vector删除元素的几种方式(超级详细)

16. 如何避免vector容器进行不必要的扩容?

17. vector swap()成员方法还可以这样用!

18. 切忌,vector<bool>不是存储bool类型元素的vector容器!

19. C++ STL deque容器(详解版)

20. C++ STL deque容器迭代器用法详解

21. 深度剖析deque容器底层实现原理

22. C++ STL deque容器访问元素(4种方法)

23. C++ STL deque容器添加和删除元素方法完全攻略

24. C++ list(STL list)容器完全攻略(超级详细)

25. C++ STL list迭代器及用法(详解版)

26. C++ list容器底层存储结构(详解版)

27. C++ list(STL list)访问元素的几种方法

28. C++ STL list添加(插入)元素方法详解

29. empty()和size()都可以判断容器是否为空,谁更好?

30. C++ STL list删除元素详解

31. C++ STL forward_list容器完全攻略

第3章 STL关联式容器

1. C++ STL关联式容器是什么?

2. C++ STL pair用法详解

3. C++ STL map容器详解

4. C++ STL map容器迭代器用法详解

5. C++ STL map获取键对应值的几种方法(超详细)

6. C++ STL map insert()插入数据的4种方式

7. C++ map容器operator[]和insert()效率对比(深度剖析)

8. C++ STL map emplace()和emplace_hint()方法详解

9. C++ map容器3种插入键值对的方法,谁的效率更高?

10. C++ STL multimap容器用法完全攻略(超详细)

11. C++ STL set容器完全攻略(超级详细)

12. C++ STL set容器迭代器用法详解

13. C++ STL set insert()方法详解

14. C++ STL set emplace()和emplace_hint()方法详解

15. C++ STL set删除数据:erase()和clear()方法

16. C++ STL multiset容器详解

17. 如何自定义C++ STL关联式容器的排序规则?

18. 如何修改关联式容器中键值对的键?

第4章 STL无序关联式容器

1. C++ STL无序容器(哈希容器)是什么?

2. C++ STL unordered_map容器用法详解

3. 深度剖析C++无序容器的底层实现机制

4. C++ unordered_map迭代器的用法

5. C++ STL unordered_map获取元素的4种方法(超级详细)

6. C++ unordered_map insert()用法精讲

7. C++ unordered_map emplace()和emplace_hint()方法

8. C++ STL unordered_map删除元素:erase()和clear()

9. C++ STL unordered_multimap容器精讲

10. C++ STL unordered_set容器完全攻略

11. C++ STL unordered_multiset容器详解

12. 如何自定义C++ STL无序容器的哈希函数和比较规则?(超级详细)

13. C++ STL容器这么多,怎样选出最适合的?

第5章 STL容器适配器

1. 什么是适配器,C++ STL容器适配器详解

2. C++ stack(STL stack)容器适配器用法详解

3. stack容器适配器实现计算器(含实现代码)

4. C++ STL queue容器适配器详解

5. C++ queue容器适配器模拟超市结账环节

6. C++ STL priority_queue容器适配器详解

7. priority_queue容器适配器实现自定义排序

8. 深度剖析priority_queue容器的底层实现

第6章 STL迭代器适配器

1. C++ STL迭代器适配器是什么?

2. C++ STL 反向迭代器适配器(reverse_iterator)详解

3. C++ STL插入迭代器适配器(insert_iterator)

4. C++ STL流迭代器(istream_iterator和ostream_iterator)

5. C++ STL流缓冲区迭代器(streambuf_iterator)

6. C++ STL move_iterator移动迭代器用法详解

7. C++ STL advance()函数用法详解

8. C++ STL distance()函数用法详解(一看就懂)

9. 如何将const_iterator转换为iterator类型迭代器?

10. C++ STL begin()和end()函数用法

11. C++ STL prev()和next()函数用法详解

第7章 C++常用算法

1. C++ sort()排序函数用法详解

2. C++ stable_sort()用法详解

3. C++ partial_sort()函数详解

4. C++ nth_element()用法详解

5. C++ is_sorted()函数完全攻略

6. C++ STL标准库这么多排序函数,该如何选择?

7. 自定义STL算法规则,应优先使用函数对象!

8. C++ merge()和inplace_merge()函数用法(详解版)

9. C++ find()函数用法详解(超级详细)

10. 能用STL算法,绝不自己实现!

11. STL算法和容器中的成员方法同名时,该如何选择?

12. C++ find_if()和find_if_not()函数用法详解

13. C++ find_end()函数详解

14. C++ find_first_of()函数完全攻略

15. C++ adjacent_find()函数用法详解

16. C++ search()函数用法完全攻略

17. C++ search_n()函数用法(超级详细)

18. C++ partition()和stable_partition()函数详解

19. C++ partition_copy()函数详解

20. C++ partition_point()函数(详解版)

21. C++ lower_bound()函数用法详解

22. C++ upper_bound()函数(精讲版)

23. C++ equel_range()函数详解

24. C++ binary_search()函数详解

25. C++(STL) all_of、any_of及none_of算法详解

26. C++ equal(STL equal)比较算法详解

27. C++ mismatch(STL mismatch)算法详解

28. C++(STL) lexicographical_compare字符串排序算法详解

29. C++ next_permutation(STL next_permutation)算法详解

30. C++ prev_permutation(STL prev_permutation)算法详解

31. C++ is_permutation(STL is_permutation)算法详解

32. C++ copy_n(STL copy_n)算法详解

33. C++ copy_if(STL copy_if)算法详解

34. C++ copy_backward(STL copy_backward)算法详解

35. C++ reverse_copy(STL reverse_copy)算法详解

36. C++ unique(STL unique)算法详解

37. C++ rotate(STL rotate)算法详解

38. C++ rotate_copy(STL rotate_copy)算法详解

39. C++ move(STL move)函数使用详解

40. C++ swap_ranges(STL swap_ranges)函数使用详解

41. C++ remove、remove_copy、remove_if和remove_copy_if函数使用详解

42. C++ fill和fill_n函数用法详解

43. C++(STL)generate和generate_n函数用法详解

44. C++ transform(STL transform)函数用法详解

45. C++ replace,replace_if和replace_copy函数用法详解

参考:[C++ STL] 各容器简单介绍

转载:C++ STL快速入门(非常详细)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/p1279030826/article/details/114806127

智能推荐

win7 + centos7 双系统启动_centos7 windows 同时启动-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏16次。本文介绍的是在已有windows系统(默认安装在C盘)基础上安装centos7,设置双系统启动。难点: 1、linux安装程序无法识别NTFS,windows系统无法读写ext3 2、U盘启动盘无法放入大于4G的文件 3、Gurb2 添加启动项分区准备1、下载分区助手,从原有分区中切割分区并删除分区作为安装linux的空间 2、因为linux安装程序无法识别NTFS,U盘启动盘(FAT32格_centos7 windows 同时启动

HTML文档模板 | html/template-程序员宅基地

文章浏览阅读1.7k次。import "html/template"概述索引示例概观模板包(html/template)实现了数据驱动的模板,以便在代码注入过程中安全地生成HTML输出。它提供了与包文本/模板相同的接口,只要输出是HTML,就应该使用它来代替文本/模板。这里的文档侧重于包的安全特性。有关如何自行编写模板的信息,请参阅文本/模板的文档。介绍该软件包包装文本/模板,以便您可以共享其模板API以安全地解析和执行..._html template

FastReport教程:如何在报表中使用多个数据库_fastreport 数据源-程序员宅基地

文章浏览阅读2.6k次。下载FastReport.Net最新版本有时,我们必须以不同的格式处理来自不同来源的数据。对于分析师和报表开发人员来说,这可能是一个令人头疼的问题。毕竟,你必须以某种方式组合数据。幸运的是,在FastReport.Net的报表中,您可以创建许多数据连接。而且,数据源可以完全不同 - 文本文件,数据库。多亏了这一点,我们将能够在一份报表中整合数据。 在本文中,我们将介绍在报表中创建两个数据源以及..._fastreport 数据源

学术海报Poster-- 模板分享_学术海报poster模板下载-程序员宅基地

文章浏览阅读4.4k次,点赞18次,收藏13次。读研期间,发表的论文被录用,一般会通过口述演讲或者Poster海报的形式向参与者展示你的论文科研成果,其中受众面积最大的一般是Poster海报分享的形式。对于论文录用者来说,它也是最简单的一种参会形式,而拥有一份精美的海报模板,对于广大的研究生来说,能省时省力不少,科研工作成果好很重要,但是,用精美的海报展示您的科研成果,让更多的读者了解到你的科研内容/成果,同样也非常重要。我在读研期间,就苦于寻找一份精美的海报模板而花费大量时间,现将这100份模板海报分享给你,希望对你的科研之路也能有一些帮助_学术海报poster模板下载

The k-th Largest Group POJ - 2985 treap+并查集_newman likes playing with cats. he possesses lots -程序员宅基地

文章浏览阅读306次。Newman likes playing with cats. He possesses lots of cats in his home. Because the number of cats is really huge, Newman wants to group some of the cats. To do that, he first offers a number to each o_newman likes playing with cats. he possesses lots of cats in his

C#向Excel报表中插入图片的2种方法_c#insertpictoexcel 类数据集-程序员宅基地

文章浏览阅读7.2k次。这几天做向Excel插入数据,其中有插入图片的需求,经试验,下面2种方法都可以插入图片,但各有不同的用处。现将这2种方法共享出来, 希望需要的朋友进行参考,代码中已经有详细注释了。注意:使用之前需要引用COM:Microsoft Office 11.0 Object Library如果引用列表中没有,需要自行添加 C:/Program Files/Microsoft Office/OFFIC..._c#insertpictoexcel 类数据集

随便推点

避免出现bitmap内存限制OUT OF MEMORY的一种方法-程序员宅基地

文章浏览阅读261次。在编写Android程序的时候,我们总是难免会碰到OOM(OUT OF MEMORY)的错误,那么这个错误究竟是怎么来的呢,可以先看一下这篇文章ANDROID BITMAP内存限制OOM,OUT OF MEMORY。 这里,我使用Gallery来举例,在模拟器中,不会出现OOM错误,但是,一旦把程序运行到真机里,图片文件一多,必然会出现OOM,我们通过做一些额外的处理来避免。1.创建一..._取消限制outofmemory限制

Bailian2966 时区转换【时区计算】-程序员宅基地

文章浏览阅读399次。2966:时区转换总时间限制: 1000ms 内存限制: 65536kB描述直到19世纪,时间校准是一个纯粹的地方现象。每一个村庄当太阳升到最高点的时候把他们的时钟调到中午12点。一个钟表制造商人家或者村里主表的时间被认为是官方时间,市民们把自家的钟表和这个时间对齐。每周一些热心的市民会带着时间标准的表,游走大街小巷为其他市民对表。在城市之间旅游的话,在到达新地方的时候需要把怀表校准。但是,..._2966

android之SharedPreferes_在android中sharedpreferences的文件可以跨类读取吗-程序员宅基地

文章浏览阅读710次。SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?SharedPreferences类似过去W_在android中sharedpreferences的文件可以跨类读取吗

win7和linux(centos)双系统安装成win7单系统_centoslinux能改win7系统吗?-程序员宅基地

文章浏览阅读453次。首先说明一下环境:安装了win7旗舰版和centos双系统。现在的需求是删除linux系统,然后只剩下win7系统,之后再把win7重新安装。步骤:1,先使用大白菜制作一个u盘启动工具,并放入下载好的win7系统镜像2,在win7的磁盘管理(计算机右键->管理->磁盘管理)3,在磁盘管理中删除linux的分区4,重新启动系统,这时有些系统就不能进入win7了5,_centoslinux能改win7系统吗?

layout_gravity和gravity的作用和区别(上)-程序员宅基地

文章浏览阅读2k次,点赞6次,收藏7次。layout_gravity和gravity的作用和区别(上)问题描述: 最近在学习Android布局时需要将位于LinearLayout布局中的控件放在布局底部,这时会使用到android:layout_gravity=“bottom”,但是发现这样是行不通的,最后查资料找出原因,防止忘记在这记一下。gravity: 是对view控件本身来说的,是用来设置view本身的内容应该显示在vi..._layout_gravity

[Perforce系列—] 1. Perforce 的使用和常用命令-程序员宅基地

文章浏览阅读2.8w次,点赞7次,收藏20次。常见使用 p4 的方式就是使用Client 端,但是有的时候遇到这样的状况:1. Client 端的操作方式的局限, 有些操作无法实现 (一般这样的状况不多)2. 使用P4 和其他一些工具进行整合, 比如p4 整合自动部署3. 使用代码的方式来使用p4, 比如使用Perl语言来与P4 进行交互。。。。以上的状况, 直接使用P4 Client 的话, 就没办法达成我们的要求了。这个时候自然就要使用到P4的命令行。_perforce

推荐文章

热门文章

相关标签