> 文档中心 > 随心成长记9

随心成长记9

初识STL(标准模板库)

1,作用:为了提高代码的复用性
2,STL的六大组件:容器算法迭代器,仿函数,适配器,空间配置器
    容器:各种数据结构,如vector,list,deque,set,map等,用来存放数据
    算法:各种常用算法,如sort,find,for_each等
    迭代器:容器与算法之间的胶合剂
    仿函数:行为类似函数,可作为算法的某种策略
    适配器:一种用来修饰容器或者仿函数或者迭代器接口的东西
    空间配置器:负责空间的支配
3,容器,分为序列式容器:强调值得排序,容器中每个元素都有固定位置
       关联式容器:二叉树结构,各元素之间没有严格的物理结构
4,算法,分为质变算法:在运算过程中会更改元素内容,如增删改等
    非质变算法:在运算过程中不会更改元素内容,查等

5,迭代器,迭代器提供一种方法使之能够访问容器内元素,每个容器都有自己专属的迭代器,迭代器类似于指针
     迭代器,分为输入,输出,向前,双向(常用),随机访问(常用)

------------------------------------------------------------------------------------------------------------------------------    

1,vector容器

#include//使用vector容器需要包含此头文件
#include//使用STL标准库函数需要包含此头文件
void myprint(int val) {
    cout << val << endl;
}
int main()
{
    vector v;
    v.push_back(10);//尾插法插入数据
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    vector::iterator pbegin = v.begin();
    vector::iterator pend = v.end();
    //第一种遍历方式
    /*while (pbegin != pend) {
        cout << *pbegin << endl;
        pbegin++;
    }*/
    //第二种遍历方式
    /*for (vector::iterator it = v.begin(); it != v.end();it++) {
        cout << *it << endl;
    }*/
    //第三种遍历方式
    //使用STL提供的标准遍历算法    头文件 algorithm
    for_each(v.begin(), v.end(), myprint);//我喜欢
}

2,string 容器

//string 容器四种初始化方式
int main()
{
    //第一种
    string str1 = "hello world";
    cout << str1 << endl;
    //第二种
    const char* s1 = "hello world";
    string str2(s1);
    cout << str2 << endl;
    //第三种
    string str3(str2);
    cout << str3 << endl;
    //第四种
    string str4(10, 'a');
    cout << str4 << endl;
}