为什么 vector 查找返回的是迭代器而不是整数值?
vector<string>::iterator itr1 = std::find(words.begin(), words.end(), word);
最佳答案
std::find
适用于各种容器,而不仅仅是 std::vector
。例如,它适用于 std::list
但该容器不允许通过索引访问元素(至少不容易)。为了让它与所有类型的容器一起工作,它需要返回所有容器都能理解的东西,一个迭代器。
编辑:如果你想找到相当于给定迭代器的索引位置,你可以使用 std::distance
.例如:
std::distance(std::begin(words), itr1);
这适用于标准容器,但对某些容器来说可能会更慢。如果找不到元素,它返回容器的大小,因为 find
如果找不到元素返回 end
和 begin
之间的距离> 和 end
是容器的大小。
关于c++ - 为什么 std::find for vector 返回一个迭代器而不是整数位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57794072/