# std::basic_string<CharT,Traits,Allocator>::rend, std::basic_string<CharT,Traits,Allocator>::crend

< cpp‎ | string‎ | basic string

| (1) |
reverse_iterator rend(); |  | (C++11 前)
reverse_iterator rend() noexcept; |  | (C++11 起) (C++20 前)
constexpr reverse_iterator rend() noexcept; |  | (C++20 起)
| (2) |
const_reverse_iterator rend() const; |  | (C++11 前)
const_reverse_iterator rend() const noexcept; |  | (C++11 起) (C++20 前)
constexpr const_reverse_iterator rend() const noexcept; |  | (C++20 起)
| (3) |
const_reverse_iterator crend() const noexcept; |  | (C++11 起) (C++20 前)
constexpr const_reverse_iterator crend() const noexcept; |  | (C++20 起)

返回指向后随逆向字符串末字符的字符的逆向迭代器。它对应前驱非逆向字符串首字符的字符。此字符表现为占位符，试图访问它会导致未定义行为。

### 参数

（无）

### 返回值

指向后随末字符的字符的逆向迭代器

### 复杂度

常数

### 示例

    #include <algorithm>
    #include <iostream>
    #include <iterator>
    #include <string>

    int main()
    {
      std::string s("A man, a plan, a canal: Panama");
      {
        std::string c;
        std::copy(s.rbegin(), s.rend(), std::back_inserter(c));
        std::cout << c <<'\n'; // "amanaP :lanac a ,nalp a ,nam A"
      }

      {
        std::string c;
        std::copy(s.crbegin(), s.crend(), std::back_inserter(c));
        std::cout << c <<'\n'; // "amanaP :lanac a ,nalp a ,nam A"
      }
    }

输出：

    amanaP :lanac a ,nalp a ,nam A
    amanaP :lanac a ,nalp a ,nam A

### 参阅

rbegin crbegin (C++11) | 返回指向起始的逆向迭代器 (公开成员函数)