在 C++ 中,为什么 string::find
返回 size_type
而不是 iterator
?
这是有道理的,因为像 string::replace
或 string::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/