0

为什么std::reverse(c.begin(), c.end())要求底层容器c提供双向迭代器

事实上,这意味着 (multi-) map, (multi-) set,但这些不能颠倒,当然,因为它们是有序的。唯一的其他双向容器是list但它有自己的成员函数.reverse()

这意味着一个人可以申请,std::reverse哪些是随机访问arrayvectordeque

那么,为什么不“诚实”地说:需要随机访问,或者使用成员函数?

4

2 回答 2

3

您甚至不需要使用用户定义的迭代器,您可以在自己的问题中提供答案。

唯一的其他双向容器是list但它有自己的成员函数.reverse()

但是,该成员函数会反转整个列表。通过传递除andstd::reverse之外的其他迭代器,只允许反转列表的一部分。list.begin()list.end()

于 2016-10-10T21:08:51.180 回答
2

对于用户定义的迭代器或使用双向反应迭代器的硬币容器,这样做会产生不必要的限制。而且由于随机访问不是必需的,因此不应该是必需的。

于 2016-10-10T21:00:55.133 回答