大小和迭代次数C ++之间的差异

时间:2014-11-28 17:17:17

标签: c++ memory-leaks

我为类型为

的对象创建指针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;
}

问题是:

  1. 对于每个给定的一对(i, j),第一个itVec->first总是输出0,无论之前设置什么,而std::pair<int, STK::Real>的其余(int或float)输出正确。
  2. 当我在上面的循环之前输出每个向量的size()时,我总是得到与最初推送的数据相对应的元素的值数。但是,在某些情况下,上面的循环在1处描述的迭代之后具有无限次迭代,并且int的输出值是随机的,而浮点数的输出值接近于零。
  3. 我应该立即检查标准的东西吗?我有点困惑,因为如果我检查立即推送的元素,在我推动它们的函数中,我没有得到任何错误,而如果我在其他函数中执行此操作,我会得到上述行为。

0 个答案:

没有答案