将值推入2d向量然后迭代它

时间:2014-10-21 18:59:30

标签: c++ vector multidimensional-array iterator

我有一个包含数据的文件。数据的位置对于它们所在的行是重要的。可以有多列数据。在将每个值存储到向量中之后,我尝试将该数据放入另一个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;
    }
}

我的问题是,当我尝试通过迭代器访问数据时,没有数据在正确的位置,并且当它是一列数据时,它只打印出第一个值并停止。我似乎无法看到数据如何被打印出来的模式。 如果有人知道问题可能在哪里,我会非常感激。感谢

1 个答案:

答案 0 :(得分:2)

第一个循环中的错误是当你开始一个新行时也增加count,所以解决这个错误的一种方法是编写

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

在旁注中,您忘记初始化变量q,另外您应该检查numOfValues是否可以rows整除。