Spec-Zone.ru › C++

std::counted_iterator<I>::base

constexpr const I& base() const& noexcept;
(1) (с C++20)
constexpr I base() &&;
(2) (с C++20)

Возвращает базовый итератор.

1) Возвращает ссылку на базовый итератор.
2) Перемещающее создание возвращаемого значения из базового итератора.

Параметры

(нет)

Возвращаемое значение

1) Ссылка на базовый итератор.
2) Итератор, созданный перемещением из базового итератора.

Исключения

Может выбросить определяемые реализацией исключения.

Пример

#include <algorithm>
#include <iostream>
#include <iterator>
#include <type_traits>
#include <vector>
 
int main()
{
    std::vector<int> v{0, 1, 2, 3, 4};
 
    std::reverse_iterator<std::vector<int>::iterator> reverse{v.rbegin()};
 
    std::counted_iterator counted{reverse, 3};
 
    static_assert(std::is_same<
        decltype(counted.base()),
        std::reverse_iterator<std::vector<int>::iterator> const&
    >{});
 
    std::cout << "Print with reverse_iterator: ";
    for (auto r = counted.base(); r != v.rend(); ++r)
        std::cout << *r << ' ';
    std::cout << '\n';
 
    std::cout << "Print with counted_iterator: ";
    for (; counted != std::default_sentinel; ++counted)
        std::cout << counted[0] << ' ';
    std::cout << '\n';
}

Вывод:

Print with reverse_iterator: 4 3 2 1 0
Print with counted_iterator: 4 3 2

Отчеты об ошибках

Следующие отчеты об ошибках, меняющих поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, как опубликовано Правильное поведение
LWG 3391 C++20 const-версия base возвращает копию базового итератора возвращает ссылку
LWG 3593 C++20 const-версия base возвращает ссылку, но может не быть noexcept сделано noexcept

См. также

operator*operator->
(C++20)
доступ к указанному элементу
(публичный член-функция)
count
(C++20)
возвращает расстояние до конца
(публичный член-функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/iterator/counted_iterator/base

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API