将值推送到二维向量中,然后对其进行迭代

Push values into a 2d vector then iterate through it

本文关键字:然后 迭代 向量 二维      更新时间:2023-10-16

我有一个文件,里面有数据。数据的位置对于它们所在的行很重要。可以有多列数据。在我将每个值存储到一个向量中后,我试图将数据放入另一个2D向量中,这样我以后就可以使用它,并且更有组织性。我尝试在执行此操作的代码中进行迭代,但我不确定问题是在将数据存储在2D向量中时,还是在尝试迭代2D向量时。

columns = numOfValues / rows;
int count = 1;
vector<double> temp;
for(vector<double>::iterator it = data.begin(); it != data.end(); ++it)
{
    temp.push_back(*it);
    if (count == columns){
        allData.push_back(temp);
        temp.clear();
        count = 1;
    }
    count++;
}
int q, w = 0;
for(vector<vector<double> >::iterator i = allData.begin(); i != allData.end(); ++i){
    q++;
    cout << "upper vec: " << q << endl;
    for(vector<double>::iterator j = i->begin(); j != i->end(); ++j){
        w++;
        cout << "lower vec: " << w << endl;
        cout<< "2d vect values" << *j << endl;
    }
}

我的问题是,当我试图通过迭代器访问数据时,没有一个数据在正确的位置,当它是一列数据集时,它只打印出第一个值并停止。我似乎看不出像现在这样打印数据的模式。如果有人知道问题可能在哪里,我将不胜感激。谢谢

第一个循环中的错误是在开始新行时也会增加count,因此修复该错误的一种方法是写入

if (count == columns){
     // ...
}
else {
    count++;
}

顺便说一句,您忘记初始化变量q,另外还应该检查numOfValues是否可以被rows整除。