C++ STL overview

C++ STL overview

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

 

C++ STL overview

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

 

一个例子

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;//迭代器就是像是指针,我们可以对其进行++ -- 解引用

}

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

C++ STL overview

 

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

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

使用STL的理由:

1 代码重用,不需要重复造*

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

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

4 总是可用的

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