笔记(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++ 
先进入的后出来

posted @ 2015-07-27 17:22  OhYee  阅读(312)  评论(0编辑  收藏  举报