首页 > 解决方案 > 如何通过另一个不同类型的多维容器创建一个多维容器?

问题描述

我有一个二维容器,其第一维是deque,第二维是vector

如何将其转换为第一维和第二维是相同向量的新容器?

vector<deque<int>>   v1;
vector<vector<int>>  v2{v1}; //error
vector<vector<int>>  v3(v1.begin(),v1.end()); // error 

/* the different type deque<int> couldn't be used for vector<int> constructer. */

我知道我可以手动逐步复制底部元素。有什么算法可以一次完成吗?

标签: c++algorithmvector

解决方案


是的,std::transform

std::vector<std::vector<int>> v3;
v3.reserve(v1.size());

std::transform(v1.begin(), v1.end(), std::back_inserter(v3), [](const auto& d)
    {
    return std::vector<int>(d.begin(), d.end());
    });

推荐阅读