STL学习之vector(1)

今天读了Scott Meyers的Effctive C++中的第一节,才发现自己原来学习C++的那些东西到底属于哪部分了。原来庞大的C++其实也只分为4部分,分别为:C、Object-Oriented(面向对象)、Template、STL。其中,STL由3大块组成:容器、迭代器、算法(泛型算法)。学习任何语言之前,一定要先对其有个宏观方向的把握,要明白自己目前阶段学的东西到底是些什么、有什么用,这样学起来就有方向感了,不会迷茫了。 刚刚看了有关vector的一些基础知识,记录在这里,方便日后查看。

1、容器是特定类型对象的集合。

2、将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这些元素在容器中的排列次序由将它们push_back到容器里面的先后次序来决定。

3、一些最最基本的操作:

定义对象:vector vec1;

                vector vec2(vec1);

                vector vec3(n,i);

                vector vec4(n);

基本操作:vec.empty();

                vec.size();

                vec.push_back();

                vec[n];//访问第n个元素

                vec1=vec2;//赋值

4、vector vec;//定义一个空的vec容器,存放int对象

下面的这个操作是错误的:

for(vector::size_type ix=0;ix!=10ix++)

vec[ix]=ix;//试图在vec中插入10个元素,但是这里的vec压根儿就是一个空的容器,vec里面不存在任何元素,对vec使用下标操作是严重错误的。

请记住:对vec进行下标操作,只能用于获取已经存在的元素,也起不到插入元素的作用

5、关于两个迭代器

1)const vector::iterator iter1=vec.begin();//iter1是一个const迭代器,其自身的值不能改变,但其指向的元素的值可以改变。

2)vector::const_iterator iter2=vec.begin();//iter2是一个指向const对象的迭代器,其自身的值可以改变,但其指向的元素的值不能改变。

3)对于const vector vec(10,0);//定义一个const容器,容器中的元素的值不能改变

const vector::iterator iter1=vec.begin();//error!!!!!!!

vector::const_iterator iter2=vec.begin();//ok!

 

 

 

 

 

你可能感兴趣的:(STL学习之vector(1))