4个回答
展开全部
详细解释一下“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++ 程序员绝对一点都不夸张。
比如说碗可以作为水的容器,油桶可以作为油的容器。同样,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++ 程序员绝对一点都不夸张。
展开全部
容器的定义参见《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".容器首先是个类,这个类中包含了许多其他类的元素(对象)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
容器就是用来装东西的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
STL的组成部分,建议楼主看下数据结构吧.
<set><map><multiset><multimap>关联容器,低层为R-B tree
<vector>基于线性表的容器
<list>基于双向链表(采用循环实现,但循环是透明的)的容器
<deque>基于双端队列的容器
这4组最常用,此外还有容器适配器
STL容器应该配合迭代器使用
<set><map><multiset><multimap>关联容器,低层为R-B tree
<vector>基于线性表的容器
<list>基于双向链表(采用循环实现,但循环是透明的)的容器
<deque>基于双端队列的容器
这4组最常用,此外还有容器适配器
STL容器应该配合迭代器使用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询