Spec-Zone.ru › C++

std::list<T,Allocator>::rbegin, std::list<T,Allocator>::crbegin

reverse_iterator rbegin();
(1) (noexcept начиная с C++11)
const_reverse_iterator rbegin() const;
(2) (noexcept начиная с C++11)
const_reverse_iterator crbegin() const noexcept;
(3) (начиная с C++11)

Возвращает обратный итератор на первый элемент перевёрнутого list. Он соответствует последнему элементу неперевёрнутого list. Если list пуст, возвращаемый итератор равен rend().

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

Обратный итератор на первый элемент.

Сложность

Константная.

Примечания

Базовый итератор возвращаемого обратного итератора — это итератор конца. Поэтому возвращаемый итератор становится недействительным, если и когда становится недействительным итератор конца.

libc++ переносит crbegin() в режим C++98.

Пример

#include <algorithm>
#include <cassert>
#include <iostream>
#include <numeric>
#include <string>
#include <list>

int main()
{
    std::list<int> nums{1, 2, 4, 8, 16};
    std::list<std::string> fruits{"orange", "apple", "raspberry"};
    std::list<char> empty;

    // Print list nums.
    std::for_each(nums.crbegin(), nums.crend(),
                  [](const int n) { std::cout << n << ' '; });
    std::cout << '\n';

    // Sum all integers in the list nums, printing only the result.
    std::cout << "Sum of nums: "
              << std::accumulate(nums.crbegin(), nums.crend(), 0) << '\n';

    // Print the last fruit in the list fruits, checking if there is any.
    if (!fruits.empty())
        std::cout << "Last fruit: " << *fruits.crbegin() << '\n';

    if (empty.crbegin() == empty.crend())
        std::cout << "list ‘empty’ is indeed empty.\n";

    // Modify the last element in nums.
    *nums.rbegin() = 32;
    assert(*nums.crbegin() == 32);
}

Вывод:

16 8 4 2 1
Sum of nums: 31
Last fruit: raspberry
list ‘empty’ is indeed empty.

См. также

rendcrend
(C++11)
возвращает обратный итератор на конец
(открытая функция-член)
rbegincrbegin
(C++14)
возвращает обратный итератор на начало контейнера или массива
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/list/rbegin

Spec-Zone.ru

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