std::vector<T,Allocator>::rbegin, std::vector<T,Allocator>::crbegin
reverse_iterator rbegin(); | (1) |
(noexcept начиная с C++11) (constexpr начиная с C++20) |
const_reverse_iterator rbegin() const; | (2) |
(noexcept начиная с C++11) (constexpr начиная с C++20) |
const_reverse_iterator crbegin() const noexcept; | (3) |
(начиная с C++11) (constexpr начиная с C++20) |
Возвращает обратный итератор на первый элемент перевёрнутого vector. Он соответствует последнему элементу неперевёрнутого vector. Если vector пуст, возвращаемый итератор равен rend().
Возвращаемое значение
Обратный итератор на первый элемент.
Сложность
Постоянная.
Примечания
Базовый итератор возвращаемого обратного итератора — это итератор end. Поэтому возвращаемый итератор становится недействительным, если и когда недействительным становится итератор end.
libc++ переносит crbegin() в режим C++98.
Пример
#include <algorithm>
#include <cassert>
#include <iostream>
#include <numeric>
#include <string>
#include <vector>
int main()
{
std::vector<int> nums{1, 2, 4, 8, 16};
std::vector<std::string> fruits{"orange", "apple", "raspberry"};
std::vector<char> empty;
// Print vector nums.
std::for_each(nums.crbegin(), nums.crend(),
[](const int n) { std::cout << n << ' '; });
std::cout << '\n';
// Sum all integers in the vector nums, printing only the result.
std::cout << "Sum of nums: "
<< std::accumulate(nums.crbegin(), nums.crend(), 0) << '\n';
// Print the last fruit in the vector fruits, checking if there is any.
if (!fruits.empty())
std::cout << "Last fruit: " << *fruits.crbegin() << '\n';
if (empty.crbegin() == empty.crend())
std::cout << "vector ‘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 vector ‘empty’ is indeed empty.
См. также
|
(C++11) | возвращает обратный итератор на конец (открытая функция-член) |
|
(C++14) | возвращает обратный итератор на начало контейнера или массива (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/vector/rbegin