1.reverse和unique
#include<algorithm> #include<iostream> #include<vector> using namespace std; int main() { vector<int> v({1,2,3,4,5,5}); reverse(v.begin(),v.end());//O(n) for(auto x:v) cout<<x<<" "; cout<<endl; int a[]={1,2,2,3,3}; //unique会对相同元素在一起的去重 int m=unique(a,a+5)-a;cout<<m<<endl; //m为地址间的差值 for(int i=0;i<m;++i) cout<<a[i]<<" "; cout<<endl; m=unique(v.begin(),v.end())-v.begin();cout<<m<<endl; v.erase(unique(v.begin(),v.end()),v.end()); for(auto x:v) cout<<x<<" "; }
2.random_shuffle
#include<algorithm> #include<iostream> #include<vector> #include<ctime> using namespace std; int main() { srand(time(0)); int a[]={1,2,3,4,5}; random_shuffle(a,a+5); for(auto x:a) cout<<x<<" "; }
3.sort
#include<algorithm> #include<iostream> #include<vector> #include<ctime> struct st{ int a,b; //重载运算可以看作当前结构体是否排在x前面 bool operator < (const st x) const{ return a>x.a; } }s[2]; bool cmp(int a,int b)//cmp可以看作a是否应该排在b的前面 { return (a%2)&&!(b%2); } using namespace std; int main() { s[0]={1,2}; s[1]={2,1}; sort(s,s+2); cout<<s[0].a<<" "<<s[0].b<<endl; int p[]={1,2,3,4,5}; sort(p,p+5,cmp);//cmp实现了将奇数排在偶数前 for(auto x:p) cout<<x<<" "; }
4.fill
#include<iostream> #include<vector> using namespace std; int main() { int a[10]; fill(a,a+10,3); for(auto x:a) cout<<x<<" "; cout<<endl; vector<int> v; v.resize(10); fill(v.begin(),v.end(),2); for(auto x:v) cout<<x<<' '; return 0; }
5.memcpy
#include<bits/stdc++.h> using namespace std; int main() { int a[5]={1,2,3,4,5}; int b[5]; memcpy(b,a,sizeof(a));//把a的复制sizeof(a)个字节给b //12345 for(auto x:b) cout<<x<<' '; return 0; }
6.to_string和stoi
#include<bits/stdc++.h> using namespace std; int main() { string str="2147483647"; long long ans=stoi(str,0,10);//将str转化为int型 //第一个参数是字符串,第二个是起始位置,第三个是进制 cout<<ans<<'\n';//2147483647 long long sum=21474836470; string str2=to_string(sum);//将sum转化成string cout<<str2<<'\n';//21474836470 reverse(str.begin(),str.end());//反转str ans=stoll(str,0,10);//将str转化为long long cout<<ans<<'\n';//7463847412 return 0; }
7.upper_bound和lower_bound
#include<iostream> #include<algorithm> using namespace std; int main() { int a[]={1,2,4,5}; int *p=lower_bound(a,a+4,2); int *q=upper_bound(a,a+4,2); cout<<*p<<" "<<*q<<endl; int m=p-a,n=q-a; cout<<m<<" "<<n<<endl;//得到下标 cout<<q-p<<endl;//得到2出现的次数 }
8.max_element
max_element() 和 min_element()默认是从小到大排列,然后 max_element() 输出最后一个值, min_element() 输出第一个值。自定义cmp函数可以改变排列顺序但不改变输出的选择
#include<algorithm> #include<iostream> using namespace std; bool cmp(int a,int b) { return a>b; } int main() { int a[5]={1,2,3,4,5}; auto it=max_element(a,a+5); cout<<*it<<endl;//5 it=max_element(a,a+5,cmp); cout<<*it;//1,仍然输出最后一个 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类