• 笔记(2015-07-24)


    STL方面的笔记

    以下为vector queue map set stack的基本用法 
    可编译结合注释查看

      1 #include <vector>
      2 #include <iostream>
      3 #include <queue>
      4 #include <map>
      5 #include <set>
      6 #include <stack>
      7 using namespace std;
      8 
      9 #define REP(n) for(int o=0;o<n;o++)
     10 
     11 int main(){
     12 
     13     cout<<"vector功能"<<endl;
     14     vector<int> vec;//声明名称为vec的整数型向量
     15     vector<int>::iterator it_vec;//迭代器
     16     vec.clear();//清空
     17     cout<<"插入数据"<<endl;
     18     vec.push_back(1);//在末尾插入
     19     vec.push_back(3);
     20     it_vec=vec.end();//指向vec的末尾
     21     it_vec--;//向前移动一位(既1和3的中间)
     22     vec.insert(it_vec,2);//在此处插入2
     23     REP(vec.size())cout<<vec[o]<<endl;//访问数据
     24     cout<<"清除第一个数据后输出"<<endl;
     25     vec.erase(vec.begin());
     26     it_vec=vec.begin();
     27     REP(vec.size()){
     28         cout<<*it_vec<<endl;//访问数据
     29         it_vec++;//向后一位
     30     }
     31     cout<<"#####################################"<<endl<<endl;
     32 
     33 
     34     cout<<"map功能"<<endl;
     35     map<string,vector<int> > m;//声明 key的类型为string value类型为int型vector 的 映射m
     36     map<string,vector<int> >::iterator it_map;//迭代器
     37     cout<<"插入数据"<<endl;
     38     m.insert(pair<string,vector<int> >("aaa",vec));
     39     it_map=m.find("aaa");//或者指定key的位置(迭代器)
     40     cout<<"key:"<<it_map->first<<endl;
     41     cout<<"value:"<<endl;
     42     REP(vec.size())cout<<"   "<<vec[o]<<endl;
     43     cout<<"查找一个不存在的数据 find()会返回map的末尾"<<endl;
     44     it_map=m.find("Niconiconi~");
     45     if(it_map==m.end())cout<<"No Niconiconi~"<<endl;
     46     cout<<"#####################################"<<endl<<endl;
     47 
     48     cout<<"set功能"<<endl;
     49     set<int> s;//声明一个整数型集合
     50     set<int>::iterator it_set;//迭代器
     51     cout<<"倒叙插入数据并且有重复的4"<<endl;
     52     s.insert(5);
     53     s.insert(4);
     54     s.insert(4);
     55     s.insert(2);
     56     s.insert(1);
     57     it_set=s.begin();
     58     while(it_set!=s.end()){
     59         cout<<*it_set<<endl;
     60         it_set++;
     61     }
     62     cout<<"输出时4自动保留一个,并且数据由小到大输出"<<endl;
     63     cout<<"#####################################"<<endl<<endl;
     64 
     65 
     66 
     67     cout<<"queue功能"<<endl;
     68     queue<string> q;//声明一个字符串型队列 q
     69     cout<<"按顺序插入"<<endl;
     70     q.push("L");
     71     q.push("O");
     72     q.push("V");
     73     q.push("E");
     74     q.push("L");
     75     q.push("I");
     76     q.push("V");
     77     q.push("E");
     78     q.push("!");
     79     while(!q.empty()){
     80         cout<<q.front();
     81         q.pop();
     82     }
     83     cout<<endl;
     84     cout<<"先入队的先出来"<<endl;
     85     cout<<"#################################"<<endl<<endl;
     86 
     87 
     88 
     89     cout<<"priority_queue功能"<<endl;
     90     priority_queue<string> pq;//声明priority_queue一个字符串型优先队列
     91     cout<<"乱序插入具有可比较大小的数据"<<endl;
     92     pq.push("B");
     93     pq.push("A");
     94     pq.push("C");
     95     while(!pq.empty()){
     96         cout<<pq.top();
     97         pq.pop();
     98     }
     99     cout<<endl;
    100     cout<<"权值大的先出来"<<endl;
    101     cout<<"###############################"<<endl<<endl;
    102 
    103     cout<<"stack功能"<<endl;
    104     stack<string> sta;//声明一个字符串类型的栈
    105     cout<<"倒序插入数据"<<endl;
    106     sta.push("+");
    107     sta.push("+");
    108     sta.push("C");
    109         while(!sta.empty()){
    110         cout<<sta.top();
    111         sta.pop();
    112     }
    113     cout<<endl;
    114     cout<<"先进入的后出来"<<endl;
    115     return 0;
    116 }

    编译结果:

    vector功能 
    插入数据 



    清除第一个数据后输出 

    3

    #

    map功能 
    插入数据 
    key:aaa 
    value: 


    查找一个不存在的数据 find()会返回map的末尾 
    No Niconiconi~

    #

    set功能 
    倒叙插入数据并且有重复的4 




    输出时4自动保留一个,并且数据由小到大输出

    #

    queue功能 
    按顺序插入 
    LOVELIVE! 
    先入队的先出来

    #

    priority_queue功能 
    乱序插入具有可比较大小的数据 
    CBA 
    权值大的先出来

    #

    stack功能 
    倒序插入数据 
    C++ 
    先进入的后出来

  • 相关阅读:
    [转]html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
    [转]html5 Canvas画图教程(5)—canvas里画曲线之arc方法
    [转]html5 Canvas画图4:填充和渐变
    [转]html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
    [转]html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
    【Java进阶】Maven 简介
    【Java入地】Spring 的 作用域 & MVC & SSM
    【Linux】Kali 物理机安装笔记、简单过程及注意事项
    【电脑维修】 显卡错误(错误代码:43)
    【Linux】 编程环境搭建 JDK、Node.js、Npm、Yarn、Redis、Maven的安装与搭建
  • 原文地址:https://www.cnblogs.com/ohyee/p/4680705.html
Copyright © 2020-2023  润新知