将2d数组转换为矢量
Convert 2d array to vector
如何将2d数组转换为矢量?这是我目前得到的。它可以编译,但它只输出"hey",然后出现vector下标超出范围错误。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string arr[2][3] = { { "hey", "what", "up" }, { "how", "you", "doin" } };
vector<vector<string>> vec;
for (int i = 0; i < 3; i++){ //creating row
vec.push_back(vector<string>());
}
for (int n = 0; n < 3; n++){ //creating columns for the rows
for (int m = 0; m < 2; m++){
vec[m].push_back("");
}
}
for (int m = 0; m < 2; m++){ //storing and printing data
for (int n = 0; n < 3; n++){
// vec[n].push_back(arr[m][n]);
vec[m][n] = arr[m][n];
cout << vec[n][m];
}
}
cout << "n";
}
实际上你可以用一行来完成:
// Define and initialize a vector with 2D array
vector<vector<string>> vec = {vector<string>(begin(arr[0]), end(arr[0])),
vector<string>(begin(arr[1]), end(arr[1]))};
cout << arr[1][2] << endl; // cout: "doin"
cout << vec[1][2] << endl; // cout: "doin"
// print all elements
for (auto row : vec)
for (auto elem : row)
cout << elem << " "; // cout: hey what up how you doin
您把cout中的行和列搞错了。线:
cout << vec[n][m];
应:cout << vec[m][n];
以后,可以考虑使用vector的方法at。这段代码会抛出一个异常,这样更容易调试。
cout << vec.at(n).at(m);
相关文章:
- 如何使用 C++将 2D RGB 数组转换为 dds 文件?
- C++动态将矢量转换为 2D
- 借助功能将 2D 转换为 1D 数组
- 将2D矢量转换为FFTW_Complex
- 使用C++将1D数组转换为2D字符串数组
- 将 3D 变换转换为 2D
- 如何在 c++ 中将 2D 数组转换为单个字符串
- 如何将 2d 数组转换为 svg 或 png 格式的数独图像?
- 使用 std::transform 在 2d C 阵列上转换为 1d C 数组
- 如何在不复制数据的情况下将 cv::Mat 转换为 2d 标准::矢量
- 用于将笛卡尔 (x,y,z) 转换为圆柱坐标 (ρ,θ,z) 坐标 2D/3D 的代码
- 在 C++ 中,用于将大型 2D 数组转换为 1D 数组的内存分配
- 使用 c++ 将 2d CAD 对象转换为 TIFF 格式
- 如何将 2D 数组转换为矢量
- (对于C++)读取类型从文件转换为 2D 数组
- 使用 c++ 将 1D 转换为 2D
- 将 2D 矢量转换为 C 类型的最佳方法(适用于 SGX 飞地)
- 将字符 2d 数组转换为整数 2d 数组
- 正确转换 2D 数组的成员变量
- 如何使用Direct3D 11 API加载、渲染和转换2D图像