C++ 标准模板库

来源:互联网 发布:网络节点是什么意思 编辑:程序博客网 时间:2024/06/06 03:00

标准模板库

STL:标准模板库 STL:Standard Template Lib
### 一 vector 向量
本质:对数组的封装。
特点:读取能在常数时间完成。

  • 初始化vector对象的方式

    这里写图片描述

  • 遍历vector中的数据的常用方法
    第一种方法:

forint k=0;k<vec.size();K++){  cout<<vec[k]<<endl;}

第二种方法:
迭代器:iterator

  int main(void)  {   vector vec;   vec.push_back("hello");   vector<string>::iterator citer=vec.begin();   for(;citer!=vec.end();citer++)   {    cout<<*citer<endl;   }   return 0;  }  

二 list:链表

这里写图片描述
特点:数据插入速度快。

三 map:映射这里写图片描述

map<int,string> m;pair<int,string> p1(10,"shanghai");pair<int,string> p2(20,"beijing");m.insert(p1);m.insert(p2);cout<<m[10]<<endl;cout<<m[20]<<endl;
map<string,string> m;pair<string,string> p1("S","shanghai");pair<string,string> p2("B","beijing");m.insert(p1);m.insert(p2);cout<<m["S"]<<endl;cout<<m["B"]<<endl;

四 标准模板库的编码实现

由于vector使用方法已经掌握差不多,此处只想着重强调两个函数:front()以及 back()这两个函数,表示vector中的首和尾。接下来,重点学习一下 list以及map的使用方法。
关于list用法示例代码:

///////关于list的使用方法void main(){    list<int> list1;    list1.push_back(4);    list1.push_back(7);    list1.push_back(10);    //以下方法不可行    //for (int i = 0; list1.size(); i++)    //{    //  cout << list1[i] << endl;    //}    ////使用迭代器遍历可行    list<int>::iterator itor = list1.begin();    for (; itor != list1.end(); itor++)    {        cout << *itor << endl;    }}
关于map示例代码:  void main(){    map<int, string> m;    pair<int, string> p1(3, "hello");    pair<int, string> p2(6, "world");    //m.push_back(p1);////map中没有push_back    m.insert(p1);    m.insert(p2);    cout << m[3] << endl;    cout << m[6] << endl;    map<int, string>::iterator itor = m.begin();    /*for (; itor != m.end(); itor++)    {        std::cout<<*itor << endl;/////这种方法不可行    }*/    for (; itor != m.end(); itor++)    {    std::cout<<itor->first << endl;    cout << itor->second << endl;    cout << endl;    }}

注意到:对于map里的数据,是根据first的大小自动进行排序,而与insert调用顺序无关。同样,对于map<string,string> 也取决于第一个string的大小顺序。

综合示例如下:

#include <iostream>#include <string>#include <stdlib.h>#include<list>#include<vector>#include<map>using namespace std;///////关于list的使用方法int main(){    // 使用vector存储数字:3、4、8、4    vector<int> vec;    vec.push_back(3);    vec.push_back(4);    vec.push_back(8);    vec.push_back(4);    //循环打印数字    vector<int>::iterator itor = vec.begin();    for (; itor != vec.end(); itor++)    {        cout << *itor << endl;    }    // 使用map来存储字符串键值对    map<int, string> m;    pair<int, string> p1(5, "Shang Hai");    pair<int, string> p2(10, "Bei Jing");    pair<int, string> p3(7, "Guang Zhou");    m.insert(p1);    m.insert(p2);    m.insert(p3);    // 打印map中数据    map<int, string>::iterator it = m.begin();    for (; it!=m.end(); it++)    {        cout << it->first << endl;        cout << it->second << endl;        cout << endl;    }    return 0;}
0 1
原创粉丝点击