在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";
});
}

最新更新