C++中啥是容器?可不可以具体解释一下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中啥是容器?可不可以具体解释一下相关的知识,希望对你有一定的参考价值。

比如string::size_type 是什么啊?

详细解释一下“netkinghancong”所说的“容器就是用来装东西的”:
比如说碗可以作为水的容器,油桶可以作为油的容器。同样,map<class A> 可以作为 class A 对象的容器。

为了方便,C++ 中 stl 自带一些容器,map、set、vector、list、queue 等是根据不同的数据结构来制定的容器。由于不能指定容器中结点的类型(如 class A),所以采用模板的形式实现的。

如果你没学过 typedef ,去看看,下面的话当作你了解 typedef ,可以当做 string 中的代码:
typedef size_t size_type;
模板中采用这种方式对一些类型进行再定义,目的是可以很方便地更改这些类型,或者在有必要的时候将该类型作为模板参数,是提高代码“可维护性”的表现。

C++ 中的模板:
为了让 C++ 具有“泛型编程”的能力而引进,主要为了编写“适合各种类型”的代码。如 vector 并不是一个 class (类型),vector<int>、vector<double>、vector<class A> 等才是(当然,三者并不是同一类型)。

认识模板,到应用模板,到编写模板,是一个较为长远的思维路程。这比从“面向过程”到“面向对象”绝对有过之而无不及。一般 C++ 面向对象有了很好的了解之后,可以开始对泛型编程的试探。而在此之前会用就可以了。

模板刚开始出现在 C++ 中时,只被当作是“代码生成器”;而发展到现在,模板经常被当作“编译期运算”的工具,即牺牲编译期的时间,提高代码在执行期的效率。

如果想深入研究的话,推荐本人认为最经典的《Modern C++ Design》(《C++ 设计新思维》,简称 MCD)。建议对自己 C++ 功底持怀疑态度的人不要读该书。一个对 C++ 功底有自信的人读该书一般有四种情况:
A、完全看不懂,或者在前两章就被它“撂倒”。这种人奉其为“天书”。
B、能看懂一半。看了此书,知道了自己 C++ 水平有多烂,而后随着读该书,C++ 水平飞速提升。
C、完全读懂。绝对超过所谓的“计算机三级”水平 n 倍。
D、理解并合理运用。被称作百里挑一的 C++ 程序员绝对一点都不夸张。
参考技术A 容器的定义参见《The C++ Programming Language Special 3rd Editiona》page.41 "A class holding a collection of elements of some type is commonly called a container class , or simply a container".容器首先是个类,这个类中包含了许多其他类的元素(对象)。 参考技术B 容器就是用来装东西的 参考技术C STL的组成部分,建议楼主看下数据结构吧.
<set><map><multiset><multimap>关联容器,低层为R-B tree
<vector>基于线性表的容器
<list>基于双向链表(采用循环实现,但循环是透明的)的容器
<deque>基于双端队列的容器
这4组最常用,此外还有容器适配器

STL容器应该配合迭代器使用

请问JAVA中啥是集合,和数组比有啥区别呢?谢谢

请问JAVA中什么是集合,和数组比有什么区别呢?谢谢

例如: 创建数组 String[] str= new String[3]; int[] arr=new int[3];
创建集合 List list=new ArrayList(); //创建数组声明了类型
我相信你可以既直接百度到比较详细的讲解..
参考技术A 数组是集合是一种具体形式!

以上是关于C++中啥是容器?可不可以具体解释一下的主要内容,如果未能解决你的问题,请参考以下文章

在c语言中啥是前导字符? 本人是菜鸟,望好心人详细解释

spring中啥是ioc

制作容器时,啥是远程 Docker 解释器?

Java中啥是接口回调?

请问C++中啥是函数的定义性声明和函数的引用性声明,有啥区别

JavaScript中啥是prototype原型对象?它有和作用?