读书笔记之:C++标准程序库(2)

第5章 STL标准模板库
5.1 STL中的各个组件
STL的基本观念就是将数据和操作分离。而这种将数据和算法分开对待的考虑和面向对象的思想是矛盾的。
 
5.2 容器
序列容器Sequence containers和关联式容器Assocative containers
 
严格来说,C++标准并未定义某一种容器的具体实现,然而标准却规定了对其行为和复杂度的要求,这让库的作者没有太多变化的余地。所以实际上各个实际版本之间只是在细节上有所差异。
STL中的插入迭代器
 测试三种迭代器的代码:
#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <set>
#include <algorithm>
#include <cstdlib>
#include <iterator>
using namespace std;
int main(){
    list<int> coll1;
    for(int i=1;i<=9;i++)
        coll1.push_back(rand()%100);
    copy(coll1.begin(),coll1.end(),ostream_iterator<int>(cout," "));
    cout<<endl;
    vector<int> coll2;
    copy(coll1.begin(),coll1.end(),
            back_inserter(coll2));
    copy(coll2.begin(),coll2.end(),ostream_iterator<int>(cout," "));
    cout<<endl;
    deque<int> coll3;
    copy(coll1.begin(),coll1.end(),
            front_inserter(coll3));
    copy(coll3.begin(),coll3.end(),ostream_iterator<int>(cout," "));
    cout<<endl;
    set<int> coll4;
    copy(coll1.begin(),coll1.end(),
            inserter(coll4,coll4.begin()));
    copy(coll4.begin(),coll4.end(),ostream_iterator<int>(cout," "));
    cout<<endl;
}

 

流迭代器