Maison >développement back-end >C++ >Comment trier les conteneurs C++ STL ?

Comment trier les conteneurs C++ STL ?

WBOY
WBOYoriginal
2024-06-02 20:22:00496parcourir

Comment trier les conteneurs STL en C++ : utilisez la fonction sort() pour trier les conteneurs sur place, tels que std::vector. Avec les conteneurs ordonnés std::set et std::map, les éléments sont automatiquement triés lors de l'insertion. Pour un ordre de tri personnalisé, vous pouvez utiliser une classe de comparaison personnalisée, telle que le tri alphabétique d'un vecteur de chaînes.

如何排序C++ STL容器?

Comment trier les conteneurs STL C++

STL (Standard Template Library) fournit un ensemble d'algorithmes polyvalents flexibles et efficaces pour effectuer diverses opérations sur les conteneurs, y compris le tri. Les sections suivantes décrivent plusieurs manières courantes de trier les conteneurs STL en C++.

Utilisez la fonction sort()

La fonction std::sort() est la fonction la plus simple en C++ pour le tri des conteneurs. Il accepte une référence ou un pointeur vers un conteneur en entrée et trie ses éléments sur place. L'exemple suivant montre comment utiliser la fonction sort() pour trier un std::vecteur : std::sort() 函数是 C++ 中进行容器排序最简单的函数。它接受一个容器的引用或指针作为输入,并将其元素原地排序。以下示例演示如何使用 sort() 函数对一个 std::vector 进行排序:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
  std::vector<int> v = {3, 1, 4, 2, 5};

  // 使用 sort() 函数对向量进行排序
  std::sort(v.begin(), v.end());

  // 打印排序后的向量
  for (int num : v) {
    std::cout << num << " ";
  }
  
  return 0;
}

输出:

1 2 3 4 5

使用 std::set 和 std::map 的内建排序

std::setstd::map 是 C++ 中的有序容器,它们维护自己的元素集合并在插入时自动对元素进行排序。以下示例展示如何使用 std::set

#include <iostream>
#include <set>

int main() {
  std::set<int> s = {3, 1, 4, 2, 5};

  // 由于 std::set 是有序的,元素按升序存储
  for (int num : s) {
    std::cout << num << " ";
  }
  
  return 0;
}

Sortie :

1 2 3 4 5

Utilisation de std::set et std: :map tri intégré

std::set et std::map sont des conteneurs ordonnés en C++ qui conservent leurs propres ensembles d'éléments et trient automatiquement les éléments. L'exemple suivant montre comment utiliser std::set pour créer et trier un ensemble d'entiers :

#include <iostream>
#include <vector>
#include <algorithm>

class StringComparator {
public:
  bool operator()(const std::string& a, const std::string& b) const {
    return a < b;
  }
};

int main() {
  std::vector<std::string> v = {"apple", "banana", "cherry", "dog", "elephant"};

  // 使用自定义比较器对向量进行排序
  std::sort(v.begin(), v.end(), StringComparator());

  // 打印排序后的向量
  for (const std::string& s : v) {
    std::cout << s << " ";
  }
  
  return 0;
}

Sortie :

apple banana cherry dog elephant

Comparateur de tri personnalisé🎜🎜Pour les cas où un ordre de tri personnalisé est requis, vous pouvez l'implémenter via une classe de comparaison personnalisée. L'exemple suivant montre comment créer un comparateur personnalisé qui trie un vecteur de chaînes par ordre alphabétique : 🎜rrreee🎜🎜Sortie : 🎜🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn