Vector 将一维矢量转换为二维矢量

Vector 将一维矢量转换为二维矢量,vector,2d,type-conversion,Vector,2d,Type Conversion,它输出: 1 2 3 4 5 6 7 8 提前感谢更改此行 123123123 for(int i=0;i

它输出:

1 2 3
4 5 6
7 8
提前感谢

更改此行

123123123
for(int i=0;istd::cout我不知道有什么方法可以自动将一维向量转换为二维向量。不过手动操作并不太难

for (int i = 0; i < DV.size(); i++){
    for (int j = 0; j < DV.size(); j++){
        std::cout << DV[i][j] << ", ";
    }
    std::cout << std::endl;
}
如果您无法获得良好的C++11支持,则可能需要使用计数器或迭代器

for (auto row : DV) {
    for (auto value : row) {
         std::cout << value << ' ';
    }
    std::cout << "\n";
}
for(int row=0;rowstd::cout如果仔细观察,输出仍然不同。它不会从1打印到8。它似乎仍然只打印第一个
DV.size()
列。OP的当前代码看起来像是要打印出来的
12345678\n12345678\n12345678
。如果没有,那么它的向量使用错误。我猜向量使用错误,idk如何修复它
typedef std::vector<std::vector<double>> DoubleVector2D;

DoubleVector2D boxed(size_t cols, std::vector<double> values) {
    DoubleVector2D result;
    for (std::size_t i = 0; i < values.size(); ++i) {
        if (i % cols == 0) result.resize(result.size() + 1);
        result[i / cols].push_back(values[i]);
    }
    return result;
}
for (auto row : DV) {
    for (auto value : row) {
         std::cout << value << ' ';
    }
    std::cout << "\n";
}
for (int row = 0; row < DV.size(); ++row) {
    for (int col = 0; col < DV[i].size(); ++col) {
        std::cout << DV[row][col] << ' ';
    }
    std::cout << '\n';
}