【发布时间】:2017-01-16 00:17:17
【问题描述】:
我有在 Xcode 上编译的 c++ 代码,但是当我尝试在 Visual Studio 2015 上编译它时,我收到一个错误,即迭代器偏移超出范围。有人可以尝试帮助解决这个问题:
typename std::vector< HNode<T>* >::iterator ti;
while(temp.size() > 1) {
std::sort(temp.rbegin(), temp.rend(), HNodePointerCountComparator<T>());
ti = temp.end();
ti -= 1;
temp.push_back(new HNode<T>());
temp.back()->setCount(temp.back()->getCount() + (*ti)->getCount());
temp.back()->setLeft(*ti);
temp.erase(ti);
ti -= 1; //Debug assertion failed: iterator + offset out of range
temp.back()->setCount(temp.back()->getCount() + (*ti)->getCount());
temp.back()->setRight(*ti);
temp.erase(ti);
}
【问题讨论】:
-
我有可以编译的 c++ 代码——问题不是编译。当您的程序运行时,这就是问题所在。话虽如此,您究竟想用这段代码完成什么?不建议在迭代同一
vector时从vector中擦除。 -
另外,该程序有一个对您隐藏的错误,即使您说它在 XCode 中运行。很高兴 Visual Studio 检测到它。
标签: c++ vector iterator range offset