- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CSTL标准模板库简介概要1
2016.04.21 李葛;什么是STL?; 迭代器 Iterator
提供了访问容器中对象的方法。例如,可以使用一对迭代器指定list或vector中的一定范围的对象。
容器 Container
是一种数据结构,如list,vector,和deques ,以模板类的方法提供。
算法 Algorithm
是用来操作容器中的数据的模板函数。例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象。函数本身与他们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用。
仿函数 Function Object
就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。;容器;vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分 ,为了使用vector 我们必须包含相关的头文件 :
#include vector
1. 定义一个已知长度的 vector :
vector int ivec( 10 ); //类似数组定义int ia[ 10 ];
可以通过ivec[索引号] 来访问元素
使用 if ( ivec.empty() ) 判断是否是空,ivec.size()判断元素个数。
2. vector的元素被初始化为与其类型相关的缺省值:算术和指针类型的缺省值是 0,对于class 类型,缺省值可通过调用这类的缺省构造函数获得,我们还可以为每个元素提供一个显式的初始值来完成初始化,例如
vector int ivec( 10, -1 ); //定义ivec 每个元素都被初始化为-1
;
对于内置数组 我们可以显式地把数组的元素初始化为一组常量值,例如 :
int ia[ 6 ] = { -2, -1, 0, 1, 2, 1024 };
C++98中我们不能用同样的方法显式地初始化 vector ,但是可以将 vector 初始化为一个已有数组的全部或一部分,只需指定希望被用来初始化 vector 的数组的开始地址以及数组最末元的下一位置来实现,例如:
vector int ivec( ia, ia+6 ); // 把 ia 的 6 个元素拷贝到 ivec 中
vector int ivec( ia[ 2 ], ia[ 5 ] );// 拷贝 3 个元素 ia[2], ia[3], ia[4]
在C++11中,vector可以直接初始化了:
std::vectorint second ={10, 20, 30, 30, 20, 10, 10, 20};
或者:
std::vectorint second ({10, 20, 30, 30, 20, 10, 10, 20});
;
容器的insert erase assign(看文档的例子)
关联容器也支持区间插入,但由于其插入后的位置由其比较函数来决定,所以没有区间插入的位置这个参数.
for(vectorint::size_type i = 0; i != myvector.size(); i++)
{
cout myvector[i];
}
for(auto i = 0; i != myVector.size(); i++)
{
cout myvector[i];
}
for (auto x : myvector) //C++11新标准
{
std::cout x std::endl;
}
;3. 与内置数组不同 vector 可以被另一个 vector 初始化或被赋给另一个 vector 例如
vectorstring myvector;
string str;
str = abc;
myvector.push_back(str);//把字符串str压进容器
myvector.push_back(def);//把字符串def压进容器
myvector.push_back(123);
myvector.push_back(345);
vectorstring v2 = myvector;
for (vectorstring::iterator it = v2.begin(); it != v2.end(); it++){
cout *it ;
}
std::cout myvector stores v2.size() numbers.\n;
;4. 类
您可能关注的文档
- Business ethics概要1.pptx
- business English train materials商务英语中级培训教材概要1.ppt
- Business Communication Essentials 商业传意 Ch5概要1.pptx
- business Cycle最终概要1.ppt
- business letters商务信函概要1.ppt
- Business Translation 1概要1.ppt
- Business_meeting概要1.pptx
- bugfree的详细安装与使用概要1.pptx
- BusinessObjects XI 管理(公司内部资料)概要1.ppt
- Business_appointment_商务会谈概要1.ppt
文档评论(0)