c++ - 为什么 string::find 返回 size_type 而不是迭代器?

标签 c++ stl iterator find

在 C++ 中,为什么 string::find 返回 size_type 而不是 iterator

这是有道理的,因为像 string::replacestring::insert 这样的函数将迭代器作为输入,所以你可以 find 一些字符并立即将返回的迭代器传递给replace

另外,std::find 返回一个迭代器——为什么 std::string::find 不同?

最佳答案

当 Stroustrup 将标准委员会介绍给 STL 时,标准库 Shiny 的新字符串类的设计已经完成。委员会喜欢 STL 并开始将其纳入标准,从而调整了他们已经同意的大部分内容(并且可能还将标准推迟一两年)。

在其他更改中,迭代器被添加到已经完成的字符串类中作为事后的想法。您可以通过查看获取/返回位置的各种字符串成员来看到这一点——它是索引和迭代器的疯狂组合。

并不总是很容易猜测为什么有些成员函数只有带索引的版本,而有些也有带迭代器的版本。在 std::basic_string<>::find() 的情况下,然而,这似乎很容易:因为 std::find()已经返回一个迭代器,std::basic_string<>::find()保持原样。

关于c++ - 为什么 string::find 返回 size_type 而不是迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3061966/

相关文章:

c++ - 不访问列表函数的 STL 列表数组

c++ - 引用 vector 的部分片段?

c++ - std::list 永远循环,范围问题?

c++ - 如何将 .cpp 文件链接到 .h 文件以获取下载的库

c++ - 过滤由 _CrtDumpMemoryLeaks 转储的内存泄漏

C++ BST 顺序问题

c++ - 为什么在创建一个vector<A>时,类A的构造函数和析构函数只调用一次?

c++ - 使用内置的 C++ 排序函数对二维数组进行排序

python - 计算迭代器的产量数?

c++ - 我可以在 C++ 中使用方法指针,就像在 C# 中使用委托(delegate)一样吗?