c++ - 将矩阵附加到 STL 矩阵(2d std::vector)

标签 c++ c++11 stl c++14

这是将行(矩阵)附加到矩阵的方法吗?

#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/

相关文章:

c++ - boost Shared_Ptr 分配

C++从动态分配转换为引用

c++ - 聚合初始化不支持构造函数访问

c++ - 为什么 std::map 重载运算符 < 不使用比较

C++ STL 分配器与运算符 new

c++ - 具有覆盖功能的继承

c++ - 使用 open CV 的重映射函数和 CV_8SC1 类型的源图像

C++ intel TBB 内循环优化

c++ - multimap 不排序

c++ - 如何构造具有唯一指针的 vector