簡體   English   中英

在帶有 const_iterators 的容器上使用 for_each?

[英]Using for_each on container with const_iterators?

如果你用這個優雅的公式迭代一個 std 容器:

for (auto& item: queue) {}

它將使用隊列的beginend功能。

有沒有辦法在不修改隊列源的情況下使用cbegincend

我試過了

for (const auto& item: queue) {}

但是如果缺少beginend ,它就不會編譯。

你想要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.

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