番禺区住房和建设局网站,win7下用iis搭建网站,WordPress网站结构优化,青云谱网站建设STL基础
诞生 cpp的面向对象和泛型编程的思想本质就是提高复用性诞生了STL库 基本概念 STL标准模板库STL从广义上分为容器、算法及迭代器容器和算法之间通过迭代器进行连接STL几乎所有的代码都采用了模板类或者模板函数 基本组件 容器、算法、迭代器、仿函数、适配器、空间配置…STL基础
诞生 cpp的面向对象和泛型编程的思想本质就是提高复用性诞生了STL库 基本概念 STL标准模板库STL从广义上分为容器、算法及迭代器容器和算法之间通过迭代器进行连接STL几乎所有的代码都采用了模板类或者模板函数 基本组件 容器、算法、迭代器、仿函数、适配器、空间配置器容器 各类数据结构 算法 各类常用算法 迭代器 容器和算法的胶合剂 仿函数 行为类似函数可作为算法的某种策略 适配器 一种用来修饰容器或者迭代器接口的东西 空间配置器 负责空间的配置与管理 STL中容器、算法、迭代器 容器就是运用最广泛的一些数据结构实现出来分类 序列式容器 强调值的排序序列式容器中的每个元素均有固定的位置 关联式容器 二叉树结构各元素之间没有严格的物理上的顺序关系 算法 质变算法—增删改非质变算法—查找遍历 迭代器—可以初步认为是一种指针 提供一种方法使之能够依序寻访某个容器所含的各个元素每种容器都有特定的迭代器常用—双向迭代器和随机访问迭代器 vector 存放内置数据类型 容器—vector算法—for_each迭代器—vector数据类型::iterator简单举例 #includeiostream#includestring#includevector#includealgorithmusing namespace std;//手写遍历过程void test1(void){//创建一个vector容器vectorint v;//向容器中插入数据v.push_back(10);//尾插法v.push_back(20);//通过迭代器访问容器中的数据for(vectorint::iterator vi v.begin(); vi ! v.end(); vi){cout *vi endl;}}//采用STL标准库void Myprint(int val){cout val endl;}void test2(void){vectorint v;v.push_back(20);v.push_back(21);for_each(v.begin(), v.end(), Myprint);//回调技术}int main(){test1();test2();return 0;}存放自定义数据类型 #includeiostream#includestring#includevector#includealgorithmusing namespace std;class Person{public:Person(string name, int age){this-m_age age;this-m_name name;}string m_name;int m_age;};void test1(void){vectorPerson* v_p;Person p1(p1, 10);Person p2(p2, 20);v_p.push_back(p1);v_p.push_back(p2);for(vectorPerson*::iterator it v_p.begin(); it ! v_p.end(); it){cout my name is (*it)-m_name my age is (*it)-m_age endl;}}int main(){test1();return 0;}容器中嵌套容器 #includeiostream#includestring#includevector#includealgorithmusing namespace std;void test1(void){vectorvectorint v;vectorint v_1;vectorint v_2;for(int i 0; i 3; i){v_1.push_back(i1);v_2.push_back(i2);}v.push_back(v_1);v.push_back(v_2);for(vector vectorint ::iterator v_o v.begin(); v_o ! v.end(); v_o){//*v_o---是vectorint类型---依然是一个指针for(vectorint::iterator v_i (*v_o).begin(); v_i ! (*v_o).end(); v_i){cout *v_i endl;}}}int main(){test1();return 0;}