为什么 std::find for vector return 是迭代器而不是整数位置

Why does the std::find for vector return a iterator instead of the integer position

为什么向量找到 return 迭代器而不是整数值?

vector<string>::iterator itr1 = std::find(words.begin(), words.end(), word);

std::find 适用于各种容器,而不仅仅是 std::vector。例如,它适用于 std::list 但该容器不允许通过索引访问元素(至少不容易)。为了让它与所有类型的容器一起工作,它需要 return 所有容器都能理解的东西,一个迭代器。

编辑:如果要查找与给定迭代器等效的索引位置,可以使用std::distance。例如:

std::distance(std::begin(words), itr1);

这适用于标准容器,但对某些容器来说可能会更慢。如果找不到元素,它 returns 容器的大小,因为 find returns end 如果找不到元素和 [=17] 之间的距离=] 并且 end 是容器的大小。