C++에서 STL 컨테이너를 다른 유형으로 변환하는 방법에는 std::copy와 같은 표준 알고리즘을 사용하여 요소를 다른 컨테이너로 복사하거나 변환하는 것이 포함됩니다. 컨테이너 어댑터(예: std::list)를 사용하여 컨테이너를 래핑하여 다른 인터페이스를 얻습니다. 복잡한 변환이나 특정 작업을 수행하는 사용자 정의 함수를 작성합니다.
C++의 표준 템플릿 라이브러리(STL)는 데이터의 효율적인 저장 및 액세스를 위한 메커니즘을 제공하는 일련의 강력한 컨테이너를 제공합니다. 경우에 따라 추가 처리 또는 다른 시스템과의 통합을 위해 이러한 컨테이너를 다른 유형으로 변환해야 할 수도 있습니다. 이 문서에서는 STL 컨테이너를 C++의 다른 유형으로 변환하는 여러 가지 방법을 설명합니다.
C++ 표준 라이브러리는 복사 또는 복사에 사용할 수 있는 std::copy
및 std::transform
과 같은 알고리즘을 제공합니다. 컨테이너의 요소 다른 컨테이너로 변환합니다. std::copy
和 std::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; }
容器适配器是 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; }
您可以编写自己的函数来转换容器。此方法对复杂转换或执行特定操作很有用。
// 将 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; }
假设您有一个 std::vector7c07761aae243fb25620b0fe3de0dd1a
,其中包含一组文件路径。您需要将此向量转换为 std::unordered_set7c07761aae243fb25620b0fe3de0dd1a
类型的无序集合,以便快速检查文件的唯一性。
您可以使用以下代码:
#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; }
这个代码将遍历文件路径的向量,并使用 std::copy
算法将它们插入到无序集合中。std::inserter
rrreee
std::list
컨테이너 어댑터는 모든 컨테이너를 이중 연결 목록으로 래핑할 수 있습니다. 🎜rrreee🎜사용자 지정 함수 사용🎜🎜컨테이너를 변환하는 함수를 직접 작성할 수 있습니다. 이 방법은 복잡한 변환이나 특정 작업을 수행하는 데 유용합니다. 🎜rrreee🎜실용 사례🎜🎜파일 경로 집합이 포함된 std::Vector7c07761aae243fb25620b0fe3de0dd1a
이 있다고 가정해보세요. 파일의 고유성을 빠르게 확인하려면 이 벡터를 std::unordered_set<:string> 유형의 순서가 지정되지 않은 세트로 변환해야 합니다. 🎜🎜다음 코드를 사용할 수 있습니다. 🎜rrreee🎜이 코드는 파일 경로 벡터를 반복하고 <code>std::copy
알고리즘을 사용하여 순서가 지정되지 않은 세트에 삽입합니다. std::inserter
는 컨테이너에 요소를 삽입할 수 있는 특수 함수 객체입니다. 🎜위 내용은 C++ STL 컨테이너를 다른 유형으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!