zl程序教程

您现在的位置是:首页 >  其他

当前栏目

标准库中 vector list等排序

标准List排序 vector 库中
2023-09-14 09:07:07 时间

1、list自带有排序函数sort();可以定义自己的排序规则,如:

struct stTest

{

  int count;

  wstring str;

};

bool SortByNum(const stTest& left, const stTest& right)
{

  return left.count > right.count ;
}

std::list<stTest> lstTest;

lstTest.sort(SortByNum);

2、vector 没有自己的排序函数,所以要借重标准库的排序函数std::sort

vector<stTest> vecTest;
std::sort(vecTest.begin(), vecTest.end(), SortByNum);
或使用lamda表达式

std::sort(vecTest.begin(), vecTest.end(), [](const stTest& left, const stTest& right){return left.count > right.count ;});

3、关联容器map、set会自动排序;如果key是自定义的结构体或类,可以重载 operator< ,以按照自己的要求排序。如:

struct stTest
{

  int count;

  wstring str;

  bool operator<(const stTest& other) const{

    return count < other.count;

  }
};
map<stTest, wstring> myMap; //添加进去的元素会自动按照stTest的<规则排序