多维矢量C++
Multi Dimensional vector C++
本文关键字:C++ 更新时间:2023-10-16
我正在尝试创建一个这样的矩阵
1 2 3
4 5 6
将是一个 2x3 矩阵。我正在尝试使用以下代码从文本文件动态填充矩阵
int main()
{
char c;
//Determine OS
#ifdef __unix
cout << "linux machine n";
char dirinp[50] = "~/temp/coursein/p3-in.txt";
char dirout[50] = "~/temp/fileio/p3-out.txt";
#endif
#ifdef _WIN32
cout << "windows machine n";
char dirinp[50] = "C:\temp\coursein\p3-in.txt";
char dirout[50] = "C:\temp\coursein\p3-out.txt";
#endif
//Open file
ifstream infile, outfile;
infile.open(dirinp);
if (!infile)
{
cout << "Couldn't open file";
}
infile.get(c);
int col = 0, row = 0;
while(!infile.eof())
{
if (c == 'n')
{
col = col + 1;
cout << "ncol: " << col << endl;
}
//cout << c;
if (isdigit(c))
{
//cout << "its a digit";
int num = c - '0';
matrix[col].push_back(num);
cout << num << " added to matrix ";
}
infile.get(c);
}
我的主要想法是您逐个字符读取文件,搜索换行符。如果字符是数字(isdigit(c)==true),则将该元素推到矩阵的该行上。如果转到换行符,请转到矩阵的下一个垂直行,然后从左到右开始填充向量。
如果矩阵是
std::vector<std::vector<int>> matrix;
那么你所拥有的几乎可以工作。将col = col + 1
替换为
col = col + 1;
matrix.push_back(std::vector<int>());
如果你想要一个int **
那么你可以在退出 while 循环后循环matrix
int **mat = new int[matrix.size()][matrix[0].size()];
for (int i = 0; i < matrix.size(); i++) {
for (int j = 0; j < matrix[i].size(); j++) {
mat[i][j] = matrix[i][j];
}
}
相关文章:
- 没有找到相关文章