【发布时间】:2013-01-05 04:40:05
【问题描述】:
假设我有一个函数,它将迭代器作为其唯一参数,如下所示。
void DoSomethingWithIterator(std::vector<int>::iterator iter)
{
// Check the pre-condition
assert( /* how to validate iter here? */ )
// Operate on iter afterwards
..
}
我如何知道iter 是否有效。有效,我的意思是它指向向量内的现有元素,例如,从 m_intVector.begin() 到 m_intVector.end()。
【问题讨论】:
-
@David - 也许吧。未定义的行为几乎可以做任何事情,包括抛出某种异常。
-
你是如何得到这个可能无效的迭代器的?一般来说,确保不会创建错误的迭代器比稍后测试它们要容易得多。
-
您能做的最好的事情是遍历向量测试,以确保向量中的任何迭代器与对象的相等性。
-
@jogojapan:相关?重复。