为什么 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
是容器的大小。
为什么向量找到 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
是容器的大小。