[英]Why does std::reverse require bidirectional iterators?
為什么std::reverse(c.begin(), c.end())
要求基礎容器c
提供雙向迭代器 ?
事實上,這意味着(multi-) map
,(multi-) set
,但是由於它們是有序的,因此它們不能逆轉。 唯一的另一個雙向目錄容器是list
但是該容器具有其自己的成員函數.reverse()
。
這意味着可以將std::reverse
應用於隨機訪問的 array
, vector
和deque
。
那么,為什么不誠實地說:需要隨機訪問,還是使用成員函數?
您甚至不需要使用用戶定義的迭代器,只需在自己的問題中提供答案即可。
唯一的另一個雙向目錄容器是
list
但是該容器具有其自己的成員函數.reverse()
。
但是,該成員函數會反轉整個列表。 std::reverse
通過傳遞除list.begin()
和list.end()
之外的其他迭代器,僅允許列表的一部分被反轉。
對於使用雙向更新迭代器的用戶定義的迭代器或硬幣共享器,這樣做將不必要地受到限制。 並且由於不需要隨機訪問,因此也不需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.