如何检查 STL 迭代器是否指向任何东西?

How to check whether STL iterator points at anything?(如何检查 STL 迭代器是否指向任何东西?)
本文介绍了如何检查 STL 迭代器是否指向任何东西?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我想做这样的事情:

std::vector<int>::iterator it;
// /cut/ search for something in vector and point iterator at it. 
if(!it) //check whether found
    do_something(); 

但是没有运算符!对于迭代器.如何检查迭代器是否指向任何东西?

But there is no operator! for iterators. How can I check whether iterator points at anything?

推荐答案

你不能.通常的习惯用法是使用容器的结束迭代器作为未找到"标记.这就是 std::find 返回的内容.

You can't. The usual idiom is to use the container's end iterator as a 'not found' marker. This is what std::find returns.

std::vector<int>::iterator i = std::find(v.begin(), v.end(), 13);
if (i != v.end())
{
     // ...
}

对未赋值的迭代器唯一能做的就是给它赋值.

The only thing you can do with an unassigned iterator is assign a value to it.

这篇关于如何检查 STL 迭代器是否指向任何东西?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Rising edge interrupt triggering multiple times on STM32 Nucleo(在STM32 Nucleo上多次触发上升沿中断)
How to use va_list correctly in a sequence of wrapper functions calls?(如何在一系列包装函数调用中正确使用 va_list?)
OpenGL Perspective Projection Clipping Polygon with Vertex Outside Frustum = Wrong texture mapping?(OpenGL透视投影裁剪多边形,顶点在视锥外=错误的纹理映射?)
How does one properly deserialize a byte array back into an object in C++?(如何正确地将字节数组反序列化回 C++ 中的对象?)
What free tiniest flash file system could you advice for embedded system?(您可以为嵌入式系统推荐什么免费的最小闪存文件系统?)
Volatile member variables vs. volatile object?(易失性成员变量与易失性对象?)