STL方面的笔记
以下为vector queue map set stack的基本用法
可编译结合注释查看
#include <vector> #include <iostream> #include <queue> #include <map> #include <set> #include <stack> using namespace std; #define REP(n) for(int o=0;o<n;o++) int main(){ cout<<"vector功能"<<endl; vector<int> vec;//声明名称为vec的整数型向量 vector<int>::iterator it_vec;//迭代器 vec.clear();//清空 cout<<"插入数据"<<endl; vec.push_back(1);//在末尾插入 vec.push_back(3); it_vec=vec.end();//指向vec的末尾 it_vec--;//向前移动一位(既1和3的中间) vec.insert(it_vec,2);//在此处插入2 REP(vec.size())cout<<vec[o]<<endl;//访问数据 cout<<"清除第一个数据后输出"<<endl; vec.erase(vec.begin()); it_vec=vec.begin(); REP(vec.size()){ cout<<*it_vec<<endl;//访问数据 it_vec++;//向后一位 } cout<<"#####################################"<<endl<<endl; cout<<"map功能"<<endl; map<string,vector<int> > m;//声明 key的类型为string value类型为int型vector 的 映射m map<string,vector<int> >::iterator it_map;//迭代器 cout<<"插入数据"<<endl; m.insert(pair<string,vector<int> >("aaa",vec)); it_map=m.find("aaa");//或者指定key的位置(迭代器) cout<<"key:"<<it_map->first<<endl; cout<<"value:"<<endl; REP(vec.size())cout<<" "<<vec[o]<<endl; cout<<"查找一个不存在的数据 find()会返回map的末尾"<<endl; it_map=m.find("Niconiconi~"); if(it_map==m.end())cout<<"No Niconiconi~"<<endl; cout<<"#####################################"<<endl<<endl; cout<<"set功能"<<endl; set<int> s;//声明一个整数型集合 set<int>::iterator it_set;//迭代器 cout<<"倒叙插入数据并且有重复的4"<<endl; s.insert(5); s.insert(4); s.insert(4); s.insert(2); s.insert(1); it_set=s.begin(); while(it_set!=s.end()){ cout<<*it_set<<endl; it_set++; } cout<<"输出时4自动保留一个,并且数据由小到大输出"<<endl; cout<<"#####################################"<<endl<<endl; cout<<"queue功能"<<endl; queue<string> q;//声明一个字符串型队列 q cout<<"按顺序插入"<<endl; q.push("L"); q.push("O"); q.push("V"); q.push("E"); q.push("L"); q.push("I"); q.push("V"); q.push("E"); q.push("!"); while(!q.empty()){ cout<<q.front(); q.pop(); } cout<<endl; cout<<"先入队的先出来"<<endl; cout<<"#################################"<<endl<<endl; cout<<"priority_queue功能"<<endl; priority_queue<string> pq;//声明priority_queue一个字符串型优先队列 cout<<"乱序插入具有可比较大小的数据"<<endl; pq.push("B"); pq.push("A"); pq.push("C"); while(!pq.empty()){ cout<<pq.top(); pq.pop(); } cout<<endl; cout<<"权值大的先出来"<<endl; cout<<"###############################"<<endl<<endl; cout<<"stack功能"<<endl; stack<string> sta;//声明一个字符串类型的栈 cout<<"倒序插入数据"<<endl; sta.push("+"); sta.push("+"); sta.push("C"); while(!sta.empty()){ cout<<sta.top(); sta.pop(); } cout<<endl; cout<<"先进入的后出来"<<endl; return 0; }
编译结果
vector功能
插入数据
1
2
3
清除第一个数据后输出
2
3
#
map功能
插入数据
key:aaa
value:
2
3
查找一个不存在的数据 find()会返回map的末尾
No Niconiconi~
#
set功能
倒叙插入数据并且有重复的4
1
2
4
5
输出时4自动保留一个,并且数据由小到大输出
#
queue功能
按顺序插入
LOVELIVE!
先入队的先出来
#
priority_queue功能
乱序插入具有可比较大小的数据
CBA
权值大的先出来
#
stack功能
倒序插入数据
C++
先进入的后出来