我有一个包含数据的文件。数据的位置对于它们所在的行是重要的。可以有多列数据。在将每个值存储到向量中之后,我尝试将该数据放入另一个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;
}
}
我的问题是,当我尝试通过迭代器访问数据时,没有数据在正确的位置,并且当它是一列数据时,它只打印出第一个值并停止。我似乎无法看到数据如何被打印出来的模式。 如果有人知道问题可能在哪里,我会非常感激。感谢
答案 0 :(得分:2)
第一个循环中的错误是当你开始一个新行时也增加count
,所以解决这个错误的一种方法是编写
if (count == columns){
// ...
}
else {
count++;
}
在旁注中,您忘记初始化变量q
,另外您应该检查numOfValues
是否可以rows
整除。