一个经典的c++容器的解释!!

转载 2013年12月04日 09:36:10

一个很经典的C++容器的解释 转载

C++容器说实在的怎么讲呢?首先给大家举个例子,房间这个词大家不陌生吧,那么这个房间就类似于一个容器,房间是个对象吧,那么容器也是一个对象。在房间里我们可以放很多东西,比如说桌子了,椅子了,电视机等等吧,那么我们在容器里面也可以放很多东西,比如说一些对象了,所以在这个容器里也可以放很多不同的对象,然而容器本身也是一个对象,为什么要放入这个容器中呢,你比如说我们把房子的电视机,桌子,椅子等等这些东西不放入房间中,我们直接放入外面的空地中,这时你能想象一下,整个空间显示的很乱也没有条理,当我们去找一些东西的时候也是很难找的,并且也花费很长的时间,当有了房间,我们可以把这些东西放入这个房间中,这样在看占用的空间时显得不是很凌乱,所以容器也有这个好处,当然了我这里只是举个例子,具体的你还要看C++的具体说明,把这些需要的东西放入这个大的容器中,那么我们就可以直接对这个容器进行操作,就能找到里面的东西了,所以说面向对象设计对整个现实世界还是很有意义的,只要理解的透彻,慢慢的C++你就掌握的游刃有余,

   刚才我们谈论的是在房间里放一些其他的对象,比如书桌子,椅子等等吧,当放入的时候我们也是有一定的顺序的,也可能房子是2个门的,前面一个门是往里面放入的东西,当我们取东西的时候可以在另一个门中进行提取,还有的房间就一个门,并且房间不是很大,只能是先放入的东西最后才能取出,还有的房间比较大,可以任意取出房间的东西,不分先后,所以容器也是这样饿,因此容器有3种类型,vecter ,list ,deque ,然后这些容器都是类模板,怎么样定义这样的容器呢,其实很简单,我们就照葫芦画瓢就可以的,vecter<string> test 这句代码是我们定义了一个string模板类型的容器 ,test是定义了这个容器的对象,我们说过容器本身也是一个对象,只不过这个对象中存放了很多其他的对象,在这些容器元素中定义了默认的构造函数,用于创建指定类型的空容器的对象,这句话是什么意思呢,我来说一下,这里的构造函数是模板类的构造函数,也就是说我们定义一个容器的时候,初始化容器元素string模板中的构造函数,这也就是分配和初始化容器中的元素,比如说我们定义了这样一句代码

 const list<string>::size_type list_size=64

list<string> slist(list_size,"asdf");

这是我截取的C++primer 中的代码,人家说的很详细了,意思就是说,我定义了一个容器,这个容器的元素是string类型的,而每个元素的值为“asdf”这也就是不是默认构造函数的初始化

   那么我们是不是所有的类型都能放入容器呢,这是不行的,原理很简单,一个大的家具肯定不能放入一个很小的房间中,其实这里容器定义了2个约束条件,这个条件就是限制不能放入容器的条件,

《1》   元素类型必须支持赋值运算

《2》   元素类型对象必须可以复制

具体为什么这样其实大家逻辑一下就能明白的,容器中的元素能不能是容器呢,答案那是可以的,为什么呢,因为容器本身也是对象,并且他满足放入容器中的条件,定义格式如下

vecte< vecter<string> > test 这里注意一点就是定义元素为容器的时候一定要有个空格 。

    上面的只是一个初始概念的东西,到底该怎么用容器中的元素类型呢,以及怎么去添加这些元素,删除这些元素,并且还有查找具体的元素内容,我们都需要学习的。上面的只是一些浅显易懂的东西,希望大家明白

相关文章推荐

C++容器操作

转载自:http://6924918.blog.51cto.com/6914918/1275726 C++中的容器大致可以分为两个大类:顺序容器和关联容器。顺序容器中有包含有顺序容器适配器。 ...

c++顺序容器定义和初始化

一、顺序容器的定义         容器是容纳特定类型对象的集合。这种容器根据位置来存储和访问元素。就是顺序容器 二、容器适配器    根据原始的容器类型所提供的操作,通过定义新的操作接口,...

C++中的容器类详解

C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等;后者包括set,map,multiset,multimap等。若需要存储的元素数在编译器间就可以确...

可编程定时/计数器 8253/8254

在微机应用系统中,定时控制具有重要的作用。经常会有这样的应用要求:一种是要求有一些外部实时时钟,以实现延时控制或定时;另一种是要求能对外部事件计数的计数器。在微机系统中,常采用以下三种方法实现:软件定...

驱动程序中IO定时器的实现详解

IO定时器是DDK提供的一种定时器。使用这种定时器时,每间隔1s系统会调用一次IO定时器例程。 程序员稍加改进,就可以将定时间隔修改为多秒。 如果需要的时间间隔小于1S,那么IO定时器就没办法做到...

C++STL之容器、迭代器、算法

1 容器 数组 链表 vector----向量----数组 代码: #include #include using namespace std; int main() { /...

C++容器(不要指望一次就理解,晕!!!)

C++ 容器及选用总结 目录 ==================================================== 第一章 容器 第二章 Vector和stri...

实战容器编程好基友之visual studio code+docker篇(二):实时调试运行在docker中的node.js程序

上篇文章中,我们介绍了怎么利用visual studio code在本地编译生成docker镜像,这篇文章我们会介绍怎么利用Visual studio code 实时调试运行在容器中的node.js程...

C++经典类库(C++开发必看)

现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。本文为你介绍了十一种类库,有我们常见的,也有不常见的,一起来看。 AD:2013大数据全球技术峰会低价抢票中 如果...

POJ 1011 Sticks (DFS +强力剪枝 (经典))

Sticks
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个经典的c++容器的解释!!
举报原因:
原因补充:

(最多只允许输入30个字)