将值推送到二维向量中,然后对其进行迭代
Push values into a 2d vector then iterate through it
我有一个文件,里面有数据。数据的位置对于它们所在的行很重要。可以有多列数据。在我将每个值存储到一个向量中后,我试图将数据放入另一个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
整除。
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 迭代时从向量和内存中删除对象
- 如何在c++迭代器类型中包装std::chrono
- 带过滤器的现代迭代c++集合
- 如何返回引用,然后递增迭代器
- 如何在每次循环迭代期间生成向量,存储数据,然后删除该向量?
- 从两端开始浏览列表,然后使用迭代器在中间停止
- 臂组件:循环只会迭代一次,然后较低误差
- 迭代器取消引用然后"."运算符对立。 "->"运算符
- 减少 begin() 迭代器,然后再次增加它
- 指针到指针的分配然后迭代会导致分段错误
- 使用指针或引用访问向量,然后对其进行迭代缓存是不友好的
- 将迭代器存储在临时容器上,然后从其他容器中删除它们
- 将结果存储在 C++Map 中,然后迭代它,然后打印出来
- 如何将结果存储在 Map 中 C++,然后迭代它,然后打印出结果
- 将值推送到二维向量中,然后对其进行迭代
- C++:从映射中删除迭代器,然后递增到下一个迭代器
- 是否可以保存std::list中新插入元素的迭代器,然后使用该迭代器安全地擦除该元素?