STL
#include<iostream> #include<vector> #include<set> #include<string> #include<map> #include<queue> #include<stack> #include<utility> #include<algorithm> //set只能通过迭代器访问 using namespace std;//stl需要命名空间 vector<vector<int> > name;//vector的定义可以是基本类型 //结构体类型但是如果是stl类型要加空格 vector<int> vs[1000];//定义vector数组 //vector可以通过下标和迭代器访问 vector<int> vi; set<int> s; string str="abcd";//可以通过下标和迭代器访问 //和vector一样支持直接对迭代器加减数字 map<string,int>mp; queue<int> q; priority_queue<int> q2; struct fruit{ string name; int price; friend operator <(fruit f1,fruit f2)//只能重载<价格高的优先级高和sort cmp相反 { return f1.price<f2.price; } }; struct cmp{ bool operator () (fruit f1,fruit f2) { return f1.price>f2.price; } }; int main() { for(int i=1;i<=5;i++) { vi.push_back(i); } for(vector<int>::iterator it=vi.begin();it!=vi.end();it++) { cout<<*it<<" "<<endl; } vector<int>::iterator it2=vi.begin(); for(int i=0;i<=5;i++) { cout<<*(it2+i)<<" "<<endl; } vi.pop_back(); vi.size(); vi.clear(); vi.insert(vi.begin()+2,-1); //将-1插入vi[2]的位置 vi.erase(vi.begin()+3);//删除单个元素 vi.erase(vi.begin()+1,vi.begin()+4);//删除一个区间的元素 s.insert(100);//自动递增排序和降重 s.find(100);//返回迭代器 //set.erase();2种 s.size(); s.clear(); //处理不唯一的情况mutilset //unordered_set只降重 散列代替红黑树 //string 读入和输出只能用cin cout printf("%s",str.c_str());//将string转换为字符数组 //string +=拼接 >=等符号比较字典序 //length()和size()基本相同 //insert(pos,string) //insert(it,it2,it3) it待插位置 [it2,it3)待插收尾迭代器 //erase()2种 //substr(pos,len) //string::pos find函数失配返回值 //find(str2)//返回第一次出现的位置的pos //find(pos,str2) // str.replace(pos,len,str2);从pos长len替换str2 //str.replace(it1,it2,str); map<char,int>mp; mp['c']=20; //map会按照键从小到大排序 //迭代器访问it->first,it->second //map.find(key)返回键值为key迭代器 //map.erase(it) //map.erase(key) //map.erase(first,last) //map.size() //map.clear() //多值对应mutimap unordered_map不按照key排序 //queue.push()入队pop 出队front队首元素 back队尾元素 //empty size() 在使用front和back要判空 //deque //priority_queue 添加头文件queue就行 //没有front和back函数只能top访问队首元素 //push top pop empty size //优先级设置 priority_queue<int,vector<int>,less<int> > q; //less数字大优先级大 greater<int> 数字小优先级大 //friend 去掉 <改()重载的函数用结构体包装起来写在结构体外面 priority_queue<fruit,vector<fruit>,cmp> q5; //如果结构体数据庞大可以在比较函数用引用和const 参数 //stack push pop top empty size //map包含utility // pair<string,int>p; // pair<string,int>p2("22",1); // 临时pair pair<string,int>("22",1); make_pair("hah",2) //访问用p.first,p.second //pair可以直接用<等符号计较大小,先比较first在比较second //map.insert(make_pair("hah",2)); //max min abs(int)x必须是整数 math.h 下fabs用于浮点数 //swap reverse(it1,it2) 反转数组 string //next_permutation(a,a+3)给出下一个全排列 //fill(a,a+3,233) sort(a,a+6)
//sort函数只能用于string vector deque 而set和map内部是红黑树的不能用sort
/* bool cmp(int a,int b) { return a>b; a>b时a放b前 } sort(a,a+4,cmp); *///lower_bound(first,last,val)返回第一个大于等于val位置 //upper_bound(first,last,val)返回第一个大于val位置 //如果是数组就返回指针如果是stl容器就返回迭代器 return 0; }