簡體   English   中英

為什么std :: reverse需要雙向迭代器?

[英]Why does std::reverse require bidirectional iterators?

為什么std::reverse(c.begin(), c.end())要求基礎容器c提供雙向迭代器

事實上,這意味着(multi-) map ,(multi-) set ,但是由於它們是有序的,因此它們不能逆轉。 唯一的另一個雙向目錄容器是list但是該容器具有其自己的成員函數.reverse()

這意味着可以將std::reverse應用於隨機訪問的 arrayvectordeque

那么,為什么不誠實地說:需要隨機訪問,還是使用成員函數?

您甚至不需要使用用戶定義的迭代器,只需在自己的問題中提供答案即可。

唯一的另一個雙向目錄容器是list但是該容器具有其自己的成員函數.reverse()

但是,該成員函數會反轉整個列表。 std::reverse通過傳遞除list.begin()list.end()之外的其他迭代器,僅允許列表的一部分被反轉。

對於使用雙向更新迭代器的用戶定義的迭代器或硬幣共享器,這樣做將不必要地受到限制。 並且由於不需要隨機訪問,因此也不需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM