std::list::sort 对容器中的元素进行排序 sort默认使用operator < 比较元素来执行排序。
#include <iostream>
#include <list>
#include "test_list_sort.h"
int main()
{
std::list<test_list_sort> ltls;
ltls.push_back(std::string("1"));
ltls.push_back(std::string("2"));
ltls.push_back(std::string("3"));
ltls.push_back(std::string("11"));
ltls.push_back(std::string("22"));
ltls.push_back(std::string("33"));
// 调用默认的排序方法
ltls.sort();
std::cout << "default sort" << std::endl;
for (auto& it : ltls)
{
std::cout << it.value() << " < ";
}
std::cout << std::endl;
// 调用自定义的排序方法
ltls.sort([](const test_list_sort& a, const test_list_sort& b)->bool {
return a.value() > b.value();
});
std::cout << "my sort" << std::endl;
for (auto & it : ltls)
{
std::cout << it.value() << " > ";
}
std::cout << std::endl;
return 0;
}
test_list_sort.h
#pragma once
#include<string>
class test_list_sort
{
public:
test_list_sort(const std::string& v):m_value(v){}
test_list_sort(const test_list_sort& r) :m_value(r.value()) {};
test_list_sort& operator=(const test_list_sort& r){
m_value = r.value();
return *this;
};
const std::string& value() const { return m_value; }
bool operator<(const test_list_sort& r) { return value() < r.value(); }
private:
std::string m_value{ "" };
};
输出结果: