C++泛型编程简要.doc

上传人:cl****1 文档编号:544346298 上传时间:2022-09-10 格式:DOC 页数:50 大小:221KB
返回 下载 相关 举报
C++泛型编程简要.doc_第1页
第1页 / 共50页
C++泛型编程简要.doc_第2页
第2页 / 共50页
C++泛型编程简要.doc_第3页
第3页 / 共50页
C++泛型编程简要.doc_第4页
第4页 / 共50页
C++泛型编程简要.doc_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《C++泛型编程简要.doc》由会员分享,可在线阅读,更多相关《C++泛型编程简要.doc(50页珍藏版)》请在金锄头文库上搜索。

1、C+ STL泛型编程简要在中需要用到数组字符串队列堆栈链表平衡二叉树等数据结构和排序搜索算法以提高程序时间空间运行效率这些数据结构如果都需要手工来编写相当麻烦提供三种类型的组件:容器 迭代器 算法 他们都支持泛型程序设计标准容器主要有两类:顺序容器(vector list deque string等是一系列元素的有序集合)和关联容器(set multiset map multimap等包含查找元素的键值) 迭代器作用是遍历容器 STL算法库包含四种算法:排序 不可变序 变序性 数值算法C+泛型编程示例用vector向量容器装入10个整数 然后用 迭代器iterator和accumulate算法

2、统计10个整数之和#include stdafx.h#include iostream/cin cout需要#include vector/向量需要#include numeric/accumulate算法需要using namespace std;int main(int argc, char* argv)vector v;/定义向量vint i;for(i=0;i10;i+)v.push_back(i);/尾部元素扩张方式赋值for(vector:iterator it=v.begin();it!=v.end();it+)/使用iterator迭代器顺序遍历所有元素cout*it ;/输出

3、迭代器当前位置上的元素值coutendl;coutaccumulate(v.begin(),v.end(),0)endl;/统计并输出向量所有元素的和return 0;Vector向量容器 Vector向量容器不但能像数组一样对元素进行随机访问 还能在尾部插入元素 简单高效 完全可以取代数组 注意的是 vector具有内存自动管理功能 对于元素的插入和删除 可动态调整所占的内存空间 vector下标从0开始计数 对于vector的容量定义 可事先定义一个固定大小 事后可随时调整其大小;也可事先不定义 随时使用push_back()从尾部扩张元素 也可使用insert()在某个元素位置前插入新元

4、素 begin() end()分别返回首元素位置的迭代器和最后元素的下一元素位置的迭代器创建vector对象常用三种形式:(1)不指定元素个数 vector v; (2) 指定大小 vector v(10) 且每个元素的值初始化为0.0; (3) 创建n大小的vector 且每个元素具有指定初始值 vector v(10,8.6) 每个元素值是8.6向量的元素类型可以使int double char 等简单类型 也可以是结构体或者string基本字符序列容器 使用起来很灵活 Vector向量容器 用下标方式访问vector元素采用下标方式对数组赋值输出2,7,9#include stdafx.

5、h#include iostream#include vectorusing namespace std;int main(int argc, char* argv)vector v(3);v0=2;v1=7;v2=9;coutv0 v1 v2endl;return 0;Vector向量容器 用迭代器方式访问vector元素采用迭代器方式对数组赋值输出2,7,9#include stdafx.h#include iostream#include vectorusing namespace std;int main(int argc, char* argv)vector v(3);v0=2;v1

6、=7;v2=9;for(vector:iterator it=v.begin();it!=v.end();it+)cout*it ;coutendl;return 0;Vector向量容器 元素的插入用insert()方法在2,7,9插入输出8,2,1,7,9,3#include stdafx.h#include iostream#include vectorusing namespace std;int main(int argc, char* argv)vector v(3);v0=2;v1=7;v2=9;v.insert(v.begin(),8);v.insert(v.begin()+2

7、,1);v.insert(v.end(),3);vector:iterator it;for(it=v.begin();it!=v.end();it+)cout*it ;coutendl;return 0;Vector向量容器 元素的删除用erase(),clear()删除数组元素输出#include stdafx.h#include iostream#include vectorusing namespace std;int main(int argc, char* argv)vector v(10);for(int i=0;i10;i+)vi=i;v.erase(v.begin()+2);

8、vector:iterator it;for(it=v.begin();it!=v.end();it+)cout*it ;coutendl;v.erase(v.begin()+1,v.begin()+5);for(it=v.begin();it!=v.end();it+)cout*it ;coutendl;v.clear();for(it=v.begin();it!=v.end();it+)cout*it ;coutendl;coutv.size()endl;return 0;Vector向量容器 使用reverse反向排列算法用reverse将向量中某段迭代器区间元素反向排列#include

9、 stdafx.h#include iostream#include vector#include algorithmusing namespace std;int main(int argc, char* argv)vector v(10);for(int i=0;i10;i+)vi=i;reverse(v.begin(),v.end();vector:iterator it;for(it=v.begin();it!=v.end();it+)cout*it ;coutendl;return 0;Vector向量容器 使用sort算法对向量元素排序Sort算法要求使用随机访问迭代器进行排序 默

10、认 升序排序#include stdafx.h#include iostream#include vector#include algorithmusing namespace std;int main(int argc, char* argv)vector v;for(int i=0;i10;i+)v.push_back(9-i);sort(v.begin(),v.end();for(vector:iterator it=v.begin();it!=v.end();it+)cout*it ;coutb;else return ab;int main(int argc, char* argv)

11、vector v;for(int i=0;i10;i+)v.push_back(i);vector:iterator it;for(it=v.begin();it!=v.end();it+)cout*it ;coutendl;sort(v.begin(),v.end(),comp);for(it=v.begin();it!=v.end();it+)cout*it ;coutendl;return 0;Vector向量容器 向量的大小使用size()方法可以返回向量的大小 即元素的个数 使用empty()方法返回向量是否为空#include stdafx.h#include iostream#i

12、nclude vector#include algorithmusing namespace std;int main(int argc, char* argv)vector v(10);for(int i=0;i10;i+)vi=i;coutv.size()endlv.empty()endl;v.clear();coutv.size()endlv.empty()endl;return 0;String基本字符系列容器 C语言只提供char类型处理字符 而对于字符串 只能通过字符串数组来处理 十分不便 STL提供了string基本字符系列容器 可以把string 理解为字符串类 它提供了添加 删除 替换 查找 比较等丰富的方法 虽然vector也能处理字符串 但功能上比不上string 向量的类型可以是string vector 实际上就类似C语言中的字符串数组String基本字符系列容器 创建string对象创建s 空字符串#include stdafx.h#include iostream#include stringusing namespace std;int main(int arg

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号