我为类型为
的对象创建指针p_dataStatStorage_
STK::Array2D<std::vector<std::pair<int, float> > >
其中STK::Array2D
是一种2D容器,elt()
作为访问者。在我的代码中的某个时刻,我使用以下形式的回推来填充特定单元格(ind, j)
的向量:
p_dataStatStorage_->elt(ind, j).push_back(std::pair<int, float>(currMod, currProba));
稍后在代码中,在另一个函数中,我需要阅读之前推送的几对。然后我使用以下代码:
for (std::vector<std::pair<int, float> >::const_iterator itVec = p_dataStatStorage->elt(i, j).begin();
itVec != p_dataStatStorage->elt(i, j).end();
++itVec)
{
std::cout << "itVec->first: " << itVec->first << ", itVec->second: " << itVec->second << std::endl;
}
问题是:
(i, j)
,第一个itVec->first
总是输出0,无论之前设置什么,而std::pair<int, STK::Real>
的其余(int或float)输出正确。 size()
时,我总是得到与最初推送的数据相对应的元素的值数。但是,在某些情况下,上面的循环在1处描述的迭代之后具有无限次迭代,并且int的输出值是随机的,而浮点数的输出值接近于零。我应该立即检查标准的东西吗?我有点困惑,因为如果我检查立即推送的元素,在我推动它们的函数中,我没有得到任何错误,而如果我在其他函数中执行此操作,我会得到上述行为。