std::sort排列

参考文献:

std::sort的详细用法 - hchacha - 博客园

C++ std::greater实例讲解 - 码农教程

代码(取自文献1):

#include <algorithm>
#include <array>
#include <functional>
#include <iostream>

int main() {
  std::array<int, 10> s = {5, 7, 4, 2, 8, 6, 1, 9, 0, 3};

  // sort using the default operator<
  std::sort(s.begin(), s.end());
  for (auto a : s) {
    std::cout << a << " ";  // 0 1 2 3 4 5 6 7 8 9
  }
  std::cout << '\n';

  // sort using a standard library compare function object
  std::sort(s.begin(), s.end(), std::greater<int>());
  for (auto a : s) {
    std::cout << a << " ";  // 9 8 7 6 5 4 3 2 1 0
  }
  std::cout << '\n';

  // sort using a custom function object
  struct {
    bool operator()(int a, int b) const { return a < b; }
  } customLess;
  std::sort(s.begin(), s.end(), customLess);
  for (auto a : s) {
    std::cout << a << " ";  // 0 1 2 3 4 5 6 7 8 9
  }
  std::cout << '\n';

  // sort using a lambda expression
  std::sort(s.begin(), s.end(), [](int a, int b) { return b < a; });
  for (auto a : s) {
    std::cout << a << " ";  // 9 8 7 6 5 4 3 2 1 0
  }
  std::cout << '\n';
}

应用场景+变种:

排序网卡

  std::vector<std::string> wwan_ifnames_;
int32_t WwanV2::Start(const std::vector<std::string>& ifnames) {
  for (const auto& x : ifnames) {
    if (x.find("wwan") != std::string::npos) {
      wwan_ifnames_.push_back(x);
    }
  }
  std::sort(wwan_ifnames_.begin(), wwan_ifnames_.end(),
            [](const std::string& x, const std::string& y) { return x < y; });

信号降序排序

std::vector<WifiInfo>* list
  // rssi降序排序
  std::sort(list->begin(), list->end(), [](const WifiInfo& x, const WifiInfo& y) { return x.rssi > y.rssi; });

按照连接持续时间升序

std::list<WifiStaInfo>* list
  // 按照duration升序
  list->sort([](const WifiStaInfo& x, const WifiStaInfo& y) { return x.duration < y.duration; });

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值