随笔- 181  文章- 2  评论- 0  阅读- 6786 

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,仍然输出最后一个
}
复制代码

 

 posted on   ruoye123456  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示