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;i std::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;row std::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';
}