首页 > 解决方案 > 如果元素存在,则获取容器中元素的索引

问题描述

我通过学习更好地使用标准库中的算法来提高我的 C++ 技能。我有一个问题,我不确定如何使用算法正确解决。我需要检查一个元素是否存在于向量中,如果存在,获取它的索引。

使用原始循环,我将使用一个整数并为每次迭代增加它。

使用算法我只能使用std::find然后使用std::distance,但这需要比原始循环更多的计算。使用算法完成这项任务的最佳方法是什么?

标签: c++algorithmvectorstl

解决方案


使用算法完成这项任务的最佳方法是什么?

使用std::find,然后使用std::distance.

除了具有更高效find成员函数的容器,例如关联容器。在这种情况下,使用find成员函数 and std::distance

还有一些数据结构具有比迭代器更有效的计算距离的方法,但没有标准容器使用这种数据结构。

但这需要比原始循环更多的计算。

它没有(假设是优化编译器)。

为什么不?

因为有问题的标准算法不需要做任何原始循环不做的事情。


推荐阅读