有关STL的一些个人"YY"(一:容器初步)
刚刚学习了“标准模板库”,感觉这一节里的东西比较琐碎,而且与前面学习的模板关联比较大,比较重要,就打算把我脑子里想到的东西整理出来,既是一种复习,也希望对大家能有一些帮助。
STL中有以下这些概念很重要:
1、容器;
2、迭代器;
3、算法。
一, 对于容器,我个人简单地把它理解为“数组”,实际上它的本质是存放数据的“类模板”。既然是模板,构造的时候就要想一下之前学过的模板的知识。我们在使用容器的时候呢,就是一个把容器模板实例化问为容器类的过程。要注意,容器中可以存变量,也可以存对象,且存入的时候,并不是存入这个变量或者对象本身,而是存入它们的“复制品”。
容器分为两大类,顺序容器与关联容器。这里先不具体展开。
容器实例化的过程和类模板实例化的过程一样,只不过我们不用亲自写出某个容器的模板罢了。比如我们要写"vector"容器,我们可以这样:
#include<iostream> #include<vector>//注意这是vector的头文件 using namespace std; int main() { vector<int>a;//1、 vector<double>b;//2、 return 0; }
其中1和2分别是不同的容器对象。
我们在利用容器时,对于任意两个容器对象,只要它们的类型相同,就可以用<,<=,>,>=,==,!=等进行比较运算。进行比较时和我们之前学过的字符串字典序比较方法类似,这里我就不多说啦~(懒)
容器中还有相应的成员函数。我认为,要深入理解一个容器的成员函数,首先要明白其作用的范围与返回的对象:
(下面抄书,因为太多了记不全)
int size():返回容器对象中元素的个数;
bool empty():判断容器对象是否为空;
begin():返回指向容器中第一个元素的迭代器;
end():返回指向容器最后一个元素后面位置的迭代器;
rbegin():返回容器中最后一个元素未知的反向迭代器;(注意反向迭代器与一般的迭代器在遍历容器对象中元素等多种应用方面作用是不同的,这点以后我会提到。)
rend():返回指向容器中第一个元素前面位置的反向迭代器;
clear():从容器中删除所有元素;
front():返回容器中第一个元素的引用;
back():返回容器中最后一个元素的引用;
push_back():在容器末尾添加一个新的元素;
pop_back():删除容器末尾的元素。