c++ - 如何通过另一个不同类型的多维容器创建一个多维容器?
问题描述
我有一个二维容器,其第一维是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. */
我知道我可以手动逐步复制底部元素。有什么算法可以一次完成吗?
解决方案
是的,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());
});
推荐阅读
- java - 根据坐标或tessaract提取图像数据并将内容写入docs/docx word文件
- sql-server - SQL Server 2016 和创建外部表
- graphql - 在自省中选择非必填字段
- mysql - 连在一起的日期
- javascript - 如何使用自定义搜索输入和下拉菜单过滤数据表
- java - 为什么在成功的 Firebase 登录之前调用另一个活动中的方法?
- docker - Docker 容器无法访问本地托管在 mac 上的 Tomcat
- node.js - 不能在heroku中使用fs
- javascript - 比较不同的日期格式
- ios - AVAggregateAssetDownloadTask 似乎加载了两次 m3u8 文件