[英]Using for_each on container with const_iterators?
如果你用這個優雅的公式迭代一個 std 容器:
for (auto& item: queue) {}
它將使用隊列的begin
和end
功能。
有沒有辦法在不修改隊列源的情況下使用cbegin
和cend
?
我試過了
for (const auto& item: queue) {}
但是如果缺少begin
或end
,它就不會編譯。
你想要for (auto& item: std::as_const(queue)) {}
。 它仍然調用begin()
但它是const
所以它選擇了 const 重載。
有沒有辦法在不修改隊列源的情況下使用 cbegin 和 cend ?
在 C++20 中,您可以使用queue.cbegin()
和queue.cend()
來構造一個ranges::subrange
:
#include <ranges>
for (auto& item: std::ranges::subrange(queue.cbegin(), queue.cend())) {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.