STL学习之路

来源:互联网 发布:数据库应用系统的构成 编辑:程序博客网 时间:2024/06/09 22:46
STL泛型程序设计,C++的一大特色,可编写不依赖具体数据类型的程序。

知识点:
1. STL四大组件(容器、迭代器(泛化的指针)、算法、函数对象(泛化的函数))
2. 基本容器:顺序容器(Vector、deque、list)关联容器(set、multiset、map、multimap)
3. 迭代器:输入迭代器(读)、输出迭代器(写)、前向迭代器(读和写)、双向迭代器(读写和反向移动)、随机访问迭代器(类似指针)
4. 迭代器辅助函数模板:advance(使迭代器前进n个元素)、distance(计算first和last的距离)
5. 容器(s1)的基本功能:
s1.begin() //指向容器第一个元素
s1.end() //指向最后一个元素的后一个位置
s1.clear() //清空容器
s1.empty() //判断容器是否为空,返回bool类型
s1.size() //返回元素个数
s1.swap(s2) //交换s1、s2的内容
s1.capacity() //返回容量
6.迭代器失效问题

# if 0//入门了解STL四大组件(容器、迭代器(泛化的指针)、算法、函数对象(泛化的函数))# include <iostream># include <algorithm>        //STL算法头文件# include <vector>          //Vector容器头文件# include <iterator>        //迭代器头文件# include <functional>     //函数对象头文件using namespace std;int main(){    const N = 5;    vector<int> s(N);//容器Vector    for(int i = 0; i<N; i++)    {        cin>>s[i];    }    //算法、迭代器、函数对象    transform(s.begin(), s.end(), ostream_iterator<int>(cout, " "),negate<int>());    cout<<endl;    return 0;}# endif
//求数的平方值# if 0# include <iostream># include <iterator># include <algorithm># include <functional>using namespace std;double squre(double x){    return x * x;}int main(){    //调用istream_iterator类模板默认的构造函数判断输入流结束位置    transform(istream_iterator<double>(cin), istream_iterator<double>(),ostream_iterator<int>(cout, "\t"), squre);    return 0;}# endif
0 0