21xrx.com
2024-12-23 00:09:50 Monday
登录
文章检索 我的文章 写文章
C++容器排序技巧
2023-07-01 10:09:56 深夜i     --     --
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++容器排序的一些常用技巧,熟练掌握这些技巧,可以使得我们在实际使用中更加高效便捷地管理数据。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复