c++ - 从 C++ 中的二维数组初始化二维向量
问题描述
我有这个代码:
int a[4][4]=
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
}
我想初始化 B 定义如下:
vector<vector<int>> b;
我知道我可以用两个循环来做到这一点(也可能用一个循环,如此处所述:https ://stackoverflow.com/a/4092996/654019
但是有什么方法可以在没有任何循环的情况下做到这一点?
解决方案
for_each
如果您只想避免编写循环并让算法为您执行此操作,则可以使用:https ://godbolt.org/z/jxT8vfhPr
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
int a[4][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
std::vector<std::vector<int>> b;
std::for_each(a, a + 4, [&b](auto v){
b.push_back(std::vector<int>(v, v + 4));
});
std::for_each(cbegin(b), cend(b), [&b](auto v) {
std::copy(cbegin(v), cend(v), std::ostream_iterator<int>(std::cout, " "));
std::cout << "\n";
});
}
推荐阅读
- python - 如何从 Spotipy 循环 current_playback() 函数?
- node.js - 只能用node-sass解决绝对路径吗?
- javascript - 自动播放功能以任何方式绕过浏览器默认设置
- django - 在 Django Rest Framework 中测试对经过身份验证的路由的 POST 请求
- d3.js - d3 GeoJSON 投影仅显示点而不显示背景图
- delphi-2010 - E2251 对“StrLen”SysUtils.pas(7863) 的模糊重载调用:
- kendo-ui - 如何在剑道反应上传中导入和导出xlsx
- python - 使用 python 语音转文本。不打印任何东西也没有错误
- android - 带有刷新令牌的android自定义拦截器
- flutter - Flutter Moor:TypeError:无法读取 null 的属性“getFormTemplates”