6
A
回答
6
堆棧或隊列有什麼重點?一個堆棧的定義是,你只能推入並彈出...迭代器將破壞這些適配器的全部用途
1
我會注意到,這只是一個觀察,而不是一個規則。
即,在STL提供的容器適配器不支持迭代中,因爲它們限制了接口,以符合特定的模型:
- 甲堆可以僅在一端
- 在被操縱您可能只能在一端推送隊列並從另一端檢索隊列
但是,這不是一個規則,您可能會決定創建支持迭代的適配器。
相關問題
- 1. 迭代器,支持後推
- 2. 如何實現一個支持可變迭代器的容器?
- 3. 迭代器適配器只迭代地圖中的值?
- 4. 迭代器是否支持+運算符?
- 5. 升級適配器是否支持ngModel?
- 6. 輸出迭代器適配器進行計數但不復制
- 7. 適配器將任何迭代器轉換爲隨機訪問迭代器
- 8. 使用不帶容器的迭代器
- 9. 通過迭代器而不是容器
- 10. 迭代器和STL容器
- 11. C++容器的迭代器
- 12. 編譯器錯誤與boost迭代器適配器
- 13. 不一致的STL容器適配器
- 14. 編譯器支持STL容器中的有狀態分配器
- 15. C++流迭代器VS容器迭代器
- 16. 模擬器中的Android無線適配器支持
- 17. VirtualBox的:英特爾適配器類型不受支持
- 18. NFC主機,NCI不支持仿真適配器
- 19. 適配器Apns不支持xxxxxxxxxxxxxxxxxxxxxxx令牌的設備
- 20. 不維持迭代器的引用?
- 21. 如何創建容器持有策略類型的容器迭代器?
- 22. STL容器支持Windows Mobile
- 23. 迭代器的迭代器
- 24. 迭代更換容器
- 25. 迭代unique_ptr的容器
- 26. 模板:不兼容列表迭代器
- 27. 迭代器不兼容錯誤
- 28. 字符串迭代器不兼容
- 29. 向量迭代器不兼容
- 30. std ::向量迭代器不相容
+1。換句話說,容器迭代器的目的是將容器API限制爲棧/隊列/任何抽象所需的最小操作。迭代不是最低限度FIFO或LIFO的一部分。如果你想要一個可迭代的隊列,它的行爲與讀取的序列相似,但只能像隊列一樣進行變異,那麼要麼使用完整的容器接口(並且選擇不要調用'insert',只調用'push_back'),否則使用比std :: queue'更寬的接口編寫自己的容器適配器。 –
那麼?暴露的操作集仍然是輸入和輸出迭代器的超集。大量的STL算法都適用於這些算法。例如。 'std :: copy'可以很好地用於推送堆棧上的項目。 – MSalters
@ MSalters:'std :: copy'可以用來用'back_inserter'在堆棧上推送物品。堆棧不需要迭代器。任何需要棧上的迭代器*的操作都將超出LIFO棧的最小定義。如果迭代器暴露了棧操作的嚴格超集,那意味着最小棧接口公開迭代器是不合適的。 –