Home > Backend Development > C++ > body text

How to convert C++ STL container to other types?

王林
Release: 2024-06-05 20:55:59
Original
1035 people have browsed it

In C++, methods for converting an STL container to other types include copying or converting elements into another container using standard algorithms such as std::copy. Use a container adapter (such as std::list) to wrap the container to obtain a different interface. Write custom functions to perform complex transformations or specific operations.

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

How to convert a C++ STL container to other types

Introduction

The Standard Template Library (STL) in C++ provides a series of Powerful containers that provide mechanisms for efficiently storing and accessing data. Sometimes, you may need to convert these containers to other types for further processing or integration into other systems. This article describes several ways to convert STL containers to other types in C++.

Method

Use standard algorithm

The C++ standard library provides algorithms such as std::copy and std::transform , which can be used to copy or transform elements in a container into another container.

// 将 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;
}
Copy after login

Using container adapters

A container adapter is a special mechanism in C++ that allows you to use the interface of one type of container to access another type of container. std::list The container adapter can wrap any container into a doubly linked 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;
}
Copy after login

Using custom functions

You can write your own function to convert containers. This method is useful for complex transformations or performing specific operations.

// 将 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;
}
Copy after login

Practical case

Suppose you have a std::vector<std::string>, which contains a set of file paths. You need to convert this vector to an unordered set of type std::unordered_set<std::string> to quickly check the uniqueness of the file.

You can use the following code:

#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;
}
Copy after login

This code will iterate over a vector of file paths and insert them into an unordered set using the std::copy algorithm. std::inserter is a special function object that allows you to insert elements into a container.

The above is the detailed content of How to convert C++ STL container to other types?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!