多维矢量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];
    }
}
相关文章:
  • 没有找到相关文章