Maison > développement back-end > C++ > Comment puis-je trier plusieurs vecteurs en C tout en conservant la synchronisation à l'aide de Range-v3 ?

Comment puis-je trier plusieurs vecteurs en C tout en conservant la synchronisation à l'aide de Range-v3 ?

Susan Sarandon
Libérer: 2024-12-11 12:31:10
original
966 Les gens l'ont consulté

How Can I Sort Multiple Vectors in C   While Maintaining Synchronization Using Range-v3?

Tri des conteneurs verrouillés zippés en C à l'aide de Range-v3

Le défi

La tâche à portée de main implique de trier plusieurs vecteurs, ou conteneurs, tout en conservant leur ordre synchronisé. Idéalement, ce tri devrait s'effectuer sans copier les conteneurs dans un tuple ou une structure.

Solution Range-v3

Range-v3, une bibliothèque C moderne, fournit une solution pratique approche de ce problème. L'exemple suivant montre comment trier les conteneurs zippés à l'aide de ses fonctionnalités étendues :

#include <range/v3/all.hpp>
#include <iostream>

using namespace ranges;

int main() {
    std::vector<int> a1{15, 7, 3, 5};
    std::vector<int> a2{1, 2, 6, 21};

    // Zip and sort the containers
    sort(view::zip(a1, a2), std::less< std::pair<int, int> >{}, &std::pair<int, int>::first); 

    // Print the sorted vectors
    std::cout << view::all(a1) << '\n';
    std::cout << view::all(a2) << '\n';
}
Copier après la connexion

Exemple en direct

Explication

  1. La fonction range::view::zip est utilisée pour créer une vue compressée des conteneurs, donnant accès à leurs éléments de manière synchronisée. manière.
  2. La fonction std::sort est appliquée à la vue compressée, en utilisant l'opérateur std::less pour déterminer l'ordre. Le paramètre &std::pair::first précise que le tri doit être effectué en fonction du premier élément de chaque paire dans la vue compressée, qui correspond au premier vecteur.
  3. En modifiant le directement les vecteurs originaux, cette approche évite la copie inutile de data.

Conclusion

Cette solution Range-v3 offre un moyen élégant et efficace de trier plusieurs conteneurs verrouillés tout en préservant leur ordre synchronisé. Il met en évidence la puissance de Range-v3 pour résoudre des problèmes complexes de manipulation de données en C.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal