C++ STL overview

C++模板库是标准库的核心。

 

将数据和程序分离,同样的算法操作不同类型的数据,不同类型的数据有相同类型的算法。迭代器访问数据,每种容器都有其特定的迭代器。使用模板编程,不需要为每种容器都实现一套算法,同时也让用户易于理解。

 

一个例子

using namespace std;// 标准库中的函数都定义在std 命名空间

vector<int>vec;//vector 是分配在堆上的可动态增长的array

vec.push_back(1);//push_back 是vector 的成员函数,将元素放在结尾

vector<int>::iterator it1 = vec.begin();//vector 所对应的迭代器

vector<int>::iterator it2 = vec.end();//begin()   end()  是vector 的成员函数  分别返回指向该vector的一个元素 和最后一个元素的下一个元素的iterator

for(vector<int>::iterator it = it1;it1!=it2;it1++)//使用for循环搭配迭代器 可以访问vector中的每个元素

{

cout<<*it<<endl;//迭代器就是像是指针,我们可以对其进行++ -- 解引用

}

容器是半闭区间[),如下图:

 

如果尝试:   *vec.end(); 行为是未定义的。  

sort(iter1,iter2);   //  对iter1-iter2 之间的元素进行排序       算法作用于iterator  而不是直接作用于容器。

使用STL的理由:

1 代码重用,不需要重复造轮子

2 有效性。大多数编译器都对标准库代码进行了优化。

3 标准库的代码准确,bug少。

4 总是可用的

5 为创建自己的库提供了示范

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值