std::ranges::transform_view<V,F>::iterator<Const>::base
來自 cppreference.com
< cpp | ranges | transform view | iterator
constexpr const ranges::iterator_t<Base>& base() const & noexcept; |
(1) | (C++20 起) |
constexpr ranges::iterator_t<Base> base() &&; |
(2) | (C++20 起) |
返回底層迭代器。
1) 返回底層迭代器的引用。
2) 從底層迭代器移動構造結果。
目錄 |
[編輯] 引數
(無)
[編輯] 返回值
1) 底層迭代器的引用。
2) 從底層迭代器移動構造的迭代器。
[編輯] 示例
執行此程式碼
#include <algorithm> #include <iostream> #include <iterator> #include <ranges> int main() { const auto v = { 0, 1, 2, 3, 4 }; auto x2 = [](int x) { return x << 1; }; std::ranges::transform_view tv{ v, x2 }; std::ostream_iterator<int> ostr{ std::cout, " " }; std::ranges::copy(v, ostr), std::cout << '\n'; std::ranges::copy(tv.base(), ostr), std::cout << '\n'; std::ranges::copy(tv, ostr), std::cout << '\n'; }
輸出
0 1 2 3 4 0 1 2 3 4 0 2 4 6 8
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 3533 | C++20 | base 的 const& 過載返回底層迭代器的副本 |
返回引用 |
LWG 3593 | C++20 | `base` 的 const& 過載可能不是 `noexcept` 的 | 已改為 noexcept |