C++中按大小顺序返回容器的下标访问值以及字符串和数字转化

首先记录下字符串与数字想转换的两条语句

1.数字转换为字符串,使用to_string 

int num = 5;
string ch = to_string(num);

2.字符串转换为数字,使用atoi()

string ch="5";

int num=atoi(ch.c_str());

之前在python里遇到过很方便的返回序号程序,c++中要复杂一点,但是思想一样。

使用sort库函数来进行排序,并巧用lambda函数来定义自定义排序。如果自己不仅仅是比较大小,就通过更改lambda函数就好。

vector<int>  sort_indexes(const vector<int>& v, bool reverse=false) {
    vector<int> idx(v.size());//声明一个保存序号的vector,大小和输入一致。
    for (int i = 0; i != idx.size(); ++i) idx[i] = i;//赋值0-size-1 的序号
    if(reverse)//是否为逆序
    {
        sort(idx.begin(), idx.end(),//调用系统库sort函数,输入一对迭代器并用lambda函数作为对象
        [& v](int i1, int i2) {return v[i1] > v[i2];});
    }
    else{
        sort(idx.begin(), idx.end(),
        [& v](int i1, int i2) {return v[i1] <  v[i2];});
    }
    return idx;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值