【发布时间】:2014-10-21 18:59:29
【问题描述】:
我有一个包含数据的文件。数据的位置对于它们所在的行很重要。可以有多列数据。在我将每个值存储到一个向量中后,我尝试将该数据放入另一个 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;
}
}
我的问题是,当我尝试通过迭代器访问数据时,没有一个数据在正确的位置,当它是一列数据时,它只打印出第一个值并停止。我似乎看不到像现在这样打印数据的模式。 如果有人知道问题可能出在哪里,我将不胜感激。谢谢
【问题讨论】:
-
不清楚你在问什么。
-
抱歉,我会修复它,谢谢。
-
为什么要复制到锯齿状向量?你可以只索引
temp[x+y*columns] -
很难知道你在做什么,但是检查向量和指针/引用/迭代器的使用是一件好事,那就是重新分配是否正在发生。 IE。如果你正在做 push_backs 等,除非你保留内存,否则不能保证迭代器是有效的
标签: c++ vector multidimensional-array iterator