Maison > développement back-end > C++ > le corps du texte

Comment convertir un conteneur C++ STL en d'autres types ?

王林
Libérer: 2024-06-05 20:55:59
original
1070 Les gens l'ont consulté

En C++, les moyens de convertir un conteneur STL vers un autre type incluent la copie ou la conversion d'éléments dans un autre conteneur à l'aide d'algorithmes standard tels que std::copy. Utilisez un adaptateur de conteneur (tel que std::list) pour envelopper le conteneur afin d'obtenir une interface différente. Écrivez des fonctions personnalisées pour effectuer des transformations complexes ou des opérations spécifiques.

如何将C++ STL容器转换为其他类型?

Comment convertir des conteneurs STL C++ en d'autres types

Introduction

La bibliothèque de modèles standard (STL) en C++ fournit une série de conteneurs puissants qui fournissent des mécanismes pour un stockage et un accès efficaces aux données. Parfois, vous devrez peut-être convertir ces conteneurs en d'autres types pour un traitement ultérieur ou une intégration dans d'autres systèmes. Cet article décrit plusieurs façons de convertir des conteneurs STL en d'autres types en C++.

Méthode

Utiliser des algorithmes standard

La bibliothèque standard C++ fournit des algorithmes tels que std::copy et std::transform, qui peuvent être utilisés pour copier ou copier éléments dans un conteneur Convertir en un autre conteneur. std::copystd::transform 等算法,可用于将容器中的元素复制或转换到另一个容器中。

// 将 vector<int> 转换为 deque<int>
#include <vector>
#include <deque>
#include <algorithm>

int main() {
    std::vector<int> myVector{1, 2, 3, 4, 5};
    std::deque<int> myDeque;

    std::copy(myVector.begin(), myVector.end(), std::back_inserter(myDeque));

    return 0;
}
Copier après la connexion

使用容器适配器

容器适配器是 C++ 中一种特殊的机制,它允许您使用一种类型的容器的接口访问另一种类型的容器。std::list 容器适配器可将任意容器包装成双向链表。

// 将 vector<int> 转换为 list<int>
#include <vector>
#include <list>
#include <algorithm>

int main() {
    std::vector<int> myVector{1, 2, 3, 4, 5};
    std::list<int> myList(myVector.begin(), myVector.end());

    return 0;
}
Copier après la connexion

使用自定义函数

您可以编写自己的函数来转换容器。此方法对复杂转换或执行特定操作很有用。

// 将 vector<int> 转换为 map<int, int>,其中键为元素本身,值为 0
#include <vector>
#include <map>
#include <functional>

int main() {
    std::vector<int> myVector{1, 2, 3, 4, 5};
    std::map<int, int> myMap;

    std::transform(myVector.begin(), myVector.end(), std::inserter(myMap, myMap.end()),
        std::bind(std::make_pair<int, int>, std::placeholders::_1, 0));

    return 0;
}
Copier après la connexion

实战案例

假设您有一个 std::vector<std::string>,其中包含一组文件路径。您需要将此向量转换为 std::unordered_set<std::string> 类型的无序集合,以便快速检查文件的唯一性。

您可以使用以下代码:

#include <vector>
#include <unordered_set>
#include <algorithm>

int main() {
    std::vector<std::string> filePaths{"file1.txt", "file2.txt", "file3.txt", "file1.txt"};
    std::unordered_set<std::string> uniqueFilePaths;

    std::copy(filePaths.begin(), filePaths.end(), std::inserter(uniqueFilePaths, uniqueFilePaths.end()));

    return 0;
}
Copier après la connexion

这个代码将遍历文件路径的向量,并使用 std::copy 算法将它们插入到无序集合中。std::inserterrrreee

Utilisation d'adaptateurs de conteneur🎜🎜Un adaptateur de conteneur est un mécanisme spécial en C++ qui vous permet d'accéder à un type de conteneur en utilisant l'interface d'un autre type de conteneur. L'adaptateur de conteneur std::list peut envelopper n'importe quel conteneur dans une liste doublement chaînée. 🎜rrreee🎜Utilisation de fonctions personnalisées🎜🎜Vous pouvez écrire votre propre fonction pour convertir des conteneurs. Cette méthode est utile pour des transformations complexes ou pour effectuer des opérations spécifiques. 🎜rrreee🎜Cas pratique🎜🎜Supposons que vous ayez un std::vector<std::string> qui contient un ensemble de chemins de fichiers. Vous devez convertir ce vecteur en un ensemble non ordonné de type std::unordered_set<std::string> pour vérifier rapidement l'unicité du fichier. 🎜🎜Vous pouvez utiliser le code suivant : 🎜rrreee🎜Ce code parcourra un vecteur de chemins de fichiers et les insérera dans un ensemble non ordonné à l'aide de l'algorithme std::copy. std::inserter est un objet fonction spécial qui vous permet d'insérer des éléments dans un conteneur. 🎜

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal