这是将行(矩阵)附加到矩阵的方法吗?
#include <vector>
#include <memory>
using std::vector;
int size = 4; // width;
int chunk = 2; // high
int main(int argc, char const *argv[]) {
vector<vector<int>> m(10, vector<int>(size));
auto func = []() {
vector<vector<int>> n(chunk, vector<int>(size));
return n;
};
int j = 0;
for(int i = 0; i < 5; i++) {
auto n = func();
for(auto &row : n) m[j++] = row; // append rows
}
}
我希望可以只m.push_back(n)
。
最佳答案
我想你要找的是:
m.insert(m.end(), n.begin(), n.end());
然而,这将复制 n
的内容。如果之后不再需要 n
,使用 move_iterator
适配器移动行会更有效:
m.insert(m.end(),
std::make_move_iterator(n.begin()),
std::make_move_iterator(n.end()));
关于c++ - 将矩阵附加到 STL 矩阵(2d std::vector),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51465464/