STL学习之路

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

你可能感兴趣的:(C++,STL)