gpt4 book ai didi

c++ - 从搜索算法返回的约定 - 索引或迭代器

转载 作者:太空宇宙 更新时间:2023-11-04 13:43:19 25 4
gpt4 key购买 nike

我应该从字符串搜索算法返回一个迭代器还是一个索引?

特别是,我想遵守 C++ 的约定。诸如 std::find 之类的模板函数返回一个迭代器,因为它必须这样做,因为某些容器是不可索引的。更多专用函数,如 std::string::find 返回一个 size_t 索引。

对于 std::find== std::string::npos 的失败检查是 == x.end() >(通常为 -1)用于特殊版本。我认为迭代器检查方法更优雅。

在内部,出于性能和方便的原因,我将使用索引,而不考虑返回类型。

当我固定输入类型 (std::string) 时,每种返回方式的优点和缺点是什么?

最佳答案

如果你想符合 STL(尽管 STL 的设计并不完美,std::string 是索引和迭代器混合的典型示例),你应该使用迭代器。然后,可以使用std::distance根据 typename iterator_traits<InputIterator>::difference_type 找到位置(即,大多数时候是 std::size_t )。当然,这会有一个开销 O(n)对于非随机访问迭代器,但这是最符合要求的方法。

希望在未来的范围内将其纳入标准库 http://www.boost.org/doc/libs/1_57_0/libs/range/doc/html/index.html

关于c++ - 从搜索算法返回的约定 - 索引或迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26953225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com