为什么向量查找返回迭代器而不是整数值?
vector<string>::iterator itr1 = std::find(words.begin(), words.end(), word);
Run Code Online (Sandbox Code Playgroud)
Fra*_*eux 12
std::find适用于各种容器,而不仅仅是std::vector。例如,它可以使用,std::list但是该容器不允许按索引访问元素(至少不容易)。为了使其与各种容器一起使用,它需要返回所有容器都了解的东西,即迭代器。
编辑:如果要查找与给定迭代器等效的索引位置,可以使用std::distance。例如 :
std::distance(std::begin(words), itr1);
这将适用于标准容器,但对于某些容器可能会更慢。它返回容器的大小,如果没有找到该元素,因为find回报end,如果它未能找到元素之间的距离begin,并end在容器的大小。
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |