网站大量收购独家精品文档,联系QQ:2885784924

C++(day16)C++实务精选罕见资源大集合.docx

C++(day16)C++实务精选罕见资源大集合.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++ 笔记 第十六天 2007 年 4 月 12 日 1、算法 脱离具体的语言 有穷性 --- 在保证执行有限步骤之后确定能够结束确切性 --- 每条语句具体干什么 输入输出 --- 所有的算法都有输出,打印屏幕,写文件,写DB 2、快速排序法 数据个数超过一个,任选其中一个数据作为分界值,把其他数据按大小关系分为 2 组,分界值在中间 对两组数据实行递归重组 //快速排序算法,效率最高的排序算法。第一个参数表示数组首地址,第二个参数表示数组起始位置,第三个参数表示结束位置 void mysort( int * p , int left , int right ){ int l = left ; //从左侧开始走 int r = right ; //从右侧开始走 int povit = p[(left + right)/2]; //把数组中间的一个数据作为分界点do{ 个比自己大的 while( p[l]povit l right ){ //循环退出,则是 l 找到一 l++ ; } while( p[r]povit r left ){ r--; } if( l = r ){ int t = p[l]; p[l] = p[r]; p[r] = t ; l++; r--; } }while( l = r ); //条件就是左右的两个人还没有碰面 if( r left ){ //只要右边的仍比左边的大,就要继续循环mysort( p , left , r ); } if( l right ){ //只要左边的仍比右边的大,也要继续循环mysort( p , l , right ); } } 3、直接使用系统的qsort()函数要自己定义一个排序规则 4、模版 模版的参数至少出现一次,才能确定类型 只能在紧跟的函数中使用,函数声明紧跟在后面 声明多个模版类型 templateclass T1 , class T2 class 关键字不能省略 对于模版类型的要求,要能重载,,= 建议:在编码时能用一种运算符完成的操作,就不要使用多个运算符,避免多个重载 用模版写的函数叫函数模版 函数模版在调用的时候确定类型的用模版写的类叫类模版 数据类型,参数类型,函数返回类型都可以使用模版 类模版不是类,是不完整的类 类模版要在声明时用类名int指定,确定类型 C++的泛型(模版)是编译时确定类型的 --- 效率 Java 的泛型是运行时的 模版类的声明和定义(多文件结构)是不能分开的 模版函数的声明和定义是可以分开的 templateclass T 在头文件和实现文件中都要出现 5、STL 包含三大类,容器类(可以存储其他对象的对象),算法(一系列封装好的函数),迭代器(用于遍历操作的类) 容器可以直接存储对象,也可以存储对象的指针。成熟的程序员喜欢使用间接存储。 容器主要包括两种类型:序列类(一般是线形存储)和关联类(一般是非线性存储)。 vector ---- 数组 可变长 不提供pop_front()删除头元素的函数list 链表 Vector v[1000]当越界的时候,会出现段错误 v.at(1000) 越界的时候,会抛出out_of_range 的异常, 在程序中捕获 (*iter).name  v.size() 返回长度,可利用这个循环迭代 v.empty()判断容器是否为空 Iterator 迭代器 : 可以做取*操作 *iterator iter-name = iter++ 束标志 v.begin() 指向数组的开始 v.end() 指向数组最后一个元素的后面,是一个结 vector 的一个内部类 前面插入 5 入 5 个 100 新赋值,可以保证继续使用 vectorint v1; vectorint::iterator it; //iterator 是 for( it = v1.begin(); it != v1.end(); it++ ) cout *it endl; v.insert(iter,5); //在 iter 所指的元素v.insert(iter,5,100); //在 iter 所指的元素前插这样的插入操作,会造成原来的iterator 失效,对起重 list 不能做at() 多了push_front(),pop_front() iter 不能做加n 操作 使用于做频繁的插入删除操作 6、关联式容器 map 适合根据键查找值的操作 存储上按照键值排序 ,并且key 值唯一mapint,Student m; Student s( 1 ,liucy ); m.insert( mapint,Student::value_type( s.getId() , s ) ) ; //创建一

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档