http://blog.csdn.net/bailu66/article/details/7472485
C++容器说实在的怎么讲呢?首先给大家举个例子,房间这个词大家不陌生吧,那么这个房间就类似于一个容器,房间是个对象吧,那么容器也是一个对象。在房间里我们可以放很多东西,比如说桌子了,椅子了,电视机等等吧,那么我们在容器里面也可以放很多东西,比如说一些对象了,所以在这个容器里也可以放很多不同的对象,然而容器本身也是一个对象,为什么要放入这个容器中呢,你比如说我们把房子的电视机,桌子,椅子等等这些东西不放入房间中,我们直接放入外面的空地中,这时你能想象一下,整个空间显示的很乱也没有条理,当我们去找一些东西的时候也是很难找的,并且也花费很长的时间,当有了房间,我们可以把这些东西放入这个房间中,这样在看占用的空间时显得不是很凌乱,所以容器也有这个好处,当然了我这里只是举个例子,具体的你还要看C++的具体说明,把这些需要的东西放入这个大的容器中,那么我们就可以直接对这个容器进行操作,就能找到里面的东西了,所以说面向对象设计对整个现实世界还是很有意义的,只要理解的透彻,慢慢的C++你就掌握的游刃有余,
刚才我们谈论的是在房间里放一些其他的对象,比如书桌子,椅子等等吧,当放入的时候我们也是有一定的顺序的,也可能房子是2个门的,前面一个门是往里面放入的东西,当我们取东西的时候可以在另一个门中进行提取,还有的房间就一个门,并且房间不是很大,只能是先放入的东西最后才能取出,还有的房间比较大,可以任意取出房间的东西,不分先后,所以容器也是这样饿,因此容器有3种类型,veccter, 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》 元素类型对象必须可以复制
具体为什么这样其实大家逻辑一下就能明白的,容器中的元素能不能是容器呢,答案那是可以的,为什么呢,因为容器本身也是对象,并且他满足放入容器中的条件,定义格式如下
vecter<vecter <string> > test;
这里注意一点就是定义元素为容器的时候一定要有个空格 。
上面的只是一个初始概念的东西,到底该怎么用容器中的元素类型呢,以及怎么去添加这些元素,删除这些元素,并且还有查找具体的元素内容,我们都需要学习的。上面的只是一些浅显易懂的东西,希望大家明白,