0

可能重复:
C++ 检查迭代器是否有效的最佳方法

假设我有一个函数,它将迭代器作为其唯一参数,如下所示。

void DoSomethingWithIterator(std::vector<int>::iterator iter)
{
   // Check the pre-condition
   assert( /* how to validate iter here? */ )

   // Operate on iter afterwards
   ..
}

我怎么知道是否iter有效。通过有效,我的意思是它指向向量内的现有元素,例如 from m_intVector.begin()to m_intVector.end()

4

2 回答 2

6

一般来说,你不能这样做。C++ 类型旨在最大限度地提高效率,并且不包含此类附加信息。

例如,vector 的迭代器很可能等价于指向元素的指针(在我的机器上就是这种情况,使用 g++ 4.7.2)。

于 2013-01-22T01:45:02.463 回答
0

> 我的意思是它指向向量内的现有元素,例如 from m_intVector.begin()to m_intVector.end()

当然。只需遍历 的内容m_vector,并将每个迭代器与iter.

for ( std::vector<int>::iterator it = m_intVector.begin (); it != m_intVector.end (); ++it )
    if ( it == iter ) return true;
return false;

但我怀疑你不会想为那种支票付钱。

于 2013-01-22T06:15:34.453 回答