C++ 中的 `sort(str.begin(), str.end())` 和 `sort(std::begin(str), std::end(str))` 有什么区别?或者它们是相同的吗?如果是,为什么?

Ish*_*rma 3 c++ iterator stl c++14

sort(str.begin(), str.end())using和 C++ 中的 using有什么区别sort(std::begin(str), std::end(str))

这两个函数给出的结果与排序后的字符串相同,但是两者之间有什么区别吗?两者都有的原因是什么?

use*_*751 12

同样的事情,但是如果你编写begin(str)它也适用于数组之类的东西。如果 str 是一个数组,那么str.begin()它将不起作用,因为数组不是一个类。因此有些人喜欢养成写作的习惯begin(str)

  • 我喜欢这个答案。另一个答案不完整。 (3认同)

fra*_*sco 7

来自 的 C++ 参考std::begin,对于非数组:

  1. 准确返回 c.begin(),它通常是指向 c 表示的序列开头的迭代器。如果 C 是标准容器,则当 c 不是 const 限定时返回 C::iterator,否则返回 C::const_iterator。

因此,对str 使用str.begin()or是完全相同的。std::begin(str)std::string