c++ - 为什么 std::find for vector 返回一个迭代器而不是整数位置

标签 c++ std

为什么 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 如果找不到元素返回 endbegin 之间的距离> 和 end 是容器的大小。

关于c++ - 为什么 std::find for vector 返回一个迭代器而不是整数位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57794072/

相关文章:

c++ - 调用对象的析构函数是否等同于在对象上调用delete?

c++ - 如何检查 std::async 任务是否完成?

c++ - 解析字符串,其中 "separator"可以作为数据的一部分?

sockets - Rust 中 TcpListener 和 TcpAcceptor 的职责

c++ - 是否可以迭代 `const vector<int>` ?

c++ - 错误 : call of overloaded distance is ambiguous

c++ - 如何使用非静态函数计算用户输入

c++ - 可以使用一个指针来匹配 Python 中 float 变量的 int 值吗?

c++ - Qt 中默认不关联 NULL 的指针

c++ - 使用 SVD 分解的图像重建