stl
vector
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
#include<stack>
#include<list>
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
using namespace std;
int cmp(const int a,const int b)
{
return a>b;
}
int main()
{
vector<int>q ,q1;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
int t;scanf("%d",&t);
q.push_back(t); // push_back;
q1.insert(q1.begin()+i,t); // 插入位置 和数组一样 从 0 开始 。
}
for(int i=0;i<n;i++)
printf("%d ",q1[i]);
puts("");
for(int i=0;i<n;i++)
printf("%d ",q[i]);
printf("\n");
for(vector<int> ::iterator it=q.begin();it!=q.end();it++)
printf("%d ",*it); //迭代器的使用
puts("");
reverse(q.begin(),q.end()); //反向输出
for(vector<int> :: iterator it=q.begin();it!=q.end();it++){
printf("%d ",*it);
}
puts("");
sort(q.begin(),q.begin()+n,cmp);//sort对容器的使用 比较函数
for(int i=0;i<n;i++)
printf("%d ",q[i]);
puts("");
q.erase(q.begin()+2);// 删除第三个元素 时间复杂度 O(n);
printf("%d \n",q.size());
q.erase(q.begin(),q.begin()+2);
for(vector<int> :: iterator it=q.begin();it!=q.end();it++)
printf("%d ",*it);
puts("");//删除
return 0;
}
set
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
#include<stack>
#include<list>
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
using namespace std;
int main()
{
int n,t;
set<int > q;
multiset<int > q1;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&t);
q.insert(t);
q1.insert(t); //插入
}
printf("%d \n",*q.find(100)); //multiset find 返回第一个 查找元素的的 位置
if(q.find(100)==q.end())
printf(" no find \n");
else
printf("%d\n",*q.find(100));// find 找不到 怎返回 end()的地址
return 0;
}
string
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
#include<stack>
#include<list>
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
using namespace std;
int main()
{
char str[1000];
string s;
scanf("%s",str);
s=str;
s+="asdf";// string 后直接添加字符串
int len=s.length();//长度
cout<<len<<endl;
cout<<s.find('a')<<endl; //find 函数 返回下标
cout<<s<<endl;
reverse(s.begin(),s.end());
cout<<s<<endl;
reverse(s.end(),s.begin());// 将 end 置于前
cout<<s<<endl;
int a;
sscanf(str,"%d",&a);
printf("%d\n",a);
sprintf(str,"%x",a);
printf("%s\n",str); // 两个常用的字符串转换函数
return 0;
}
map
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
#include<stack>
#include<list>
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include <fstream>
using namespace std;
struct node
{
int a;int b;
bool operator < (const node &n) const
{
return n.a<a;
}
};//按node.a的值 从大到小
int main()
{
int n;
map<node,int> q1;
map<string,int> q;
scanf("%d",&n);
for(int i=0;i<n;i++){
string gg;
cin>>gg ;
q[gg]=i;
}
map<string ,int> :: iterator it;
for(it = q.begin();it!=q.end();it++)
cout<<(*it).first<<" ";
cout<<endl;
for(it = q.begin();it!=q.end();it++)
cout<<(*it).second<<" ";
cout<<endl;
map<string,int>::reverse_iterator rit;
for(rit = q.rbegin(); rit!=q.rend(); rit++)
cout<<(*rit).first<<" ";// map 访问方式 first 访问 key second 访问 value
cout<<endl;
cin>>n;
for(int i=0;i<n;i++){
int a;int b;
cin>>a>>b;
node c;
c.a=a;c.b=b;
q1[c]=i;
}
map<node,int>::iterator nit;
for(nit=q1.begin();nit!=q1.end();nit++){
cout<<(*nit).second<<" ";
}
cout<<endl;
return 0;
}
queue
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
#include<stack>
#include<list>
#include<stdlib.h>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include <fstream>
using namespace std;
struct cmp
{
bool operator () (const int &a,const int &b)
{
return a<b;
}
};//重载优先队列比较函数
int main()
{
int n,t;
priority_queue<int,vector<int>,cmp> q;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&t);
q.push(t);
}
while(!q.empty()){
int c=q.top();
printf("%d ",c);
q.pop();
}
return 0;
}
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map> #include <cstdlib> #include <list> #include <set> #include <queue> #include <stack> using namespace std; int main() { int n; set<int> q; int a[10000];int key; while(scanf("%d",&n)!=EOF){ for(int i= 0;i<n;i++) scanf("%d",&a[i]),q.insert(a[i]); scanf("%d",&key); int tem=lower_bound(a,a+n,key) - a ;//比key大的最小数的下标 找不到返回右边界(一个越界的位置) int tem1=upper_bound(a,a+n,key) - a; cout<<tem1<<endl; cout<<tem<<endl; set<int>:: iterator it=q.begin(); cout<<*q.lower_bound(key)<<endl;//比key大的最小数 } return 0; }
浙公网安备 33010602011771号