21xrx.com
2025-03-30 22:14:58 Sunday
文章检索 我的文章 写文章
C++容器排序技巧
2023-07-01 10:09:56 深夜i     23     0
C++ 容器 排序 技巧

C++作为一门高级编程语言,提供了丰富的容器数据结构,使用容器可以方便快捷地管理数据。然而,在实际使用中,我们常常需要对容器中的元素进行排序,针对不同情况有不同的排序技巧。

1. vector容器排序

vector是一种动态数组,在使用中常常需要对其进行排序。vector可以使用sort()函数进行排序,通过重载运算符号,可以实现降序和升序两种排序方式。

升序排序:

vector<int> vec = 6;
sort(vec.begin(), vec.end()); // 升序排序

降序排序:

vector<int> vec = 6;
sort(vec.begin(), vec.end(), greater<int>()); // 降序排序

2. map容器排序

map是一种关联式容器,在使用中常常需要按照键或值的大小进行排序。map也可以使用sort()函数进行排序,但需要在排序前将map中的数据转存到vector容器中进行排序。可以通过定义比较函数对象实现排序。

按键排序:

map<int, string> myMap = {2, "world", {3, "C++"}};
vector<pair<int, string>> vec(myMap.begin(), myMap.end());
sort(vec.begin(), vec.end());

按值排序:

map<int, string> myMap = { "hello", 1, {3, "C++"}};
vector<pair<int, string>> vec(myMap.begin(), myMap.end());
sort(vec.begin(), vec.end(), [](pair<int, string>& a, pair<int, string>& b)return a.second < b.second;);

3. set容器排序

set是一种关联式容器,使用set来存储数据时,数据会自动进行排序。可以使用set自带的比较函数实现降序排序。

升序排序:

set<int> mySet = 5;
for(auto it = mySet.begin(); it != mySet.end(); ++it){
 cout << *it << " ";
}

降序排序:

set<int, greater<int>> mySet = 4;
for(auto it = mySet.begin(); it != mySet.end(); ++it){
 cout << *it << " ";
}

以上是C++容器排序的一些常用技巧,熟练掌握这些技巧,可以使得我们在实际使用中更加高效便捷地管理数据。

  
  

评论区