Chuyển tới nội dung chính

std::reverse

#include <algorithm>

template <class BidirectionalIterator>
void reverse (BidirectionalIterator first, BidirectionalIterator last);

Đảo ngược thứ tự các phần tử trong một phạm vi (range) được chỉ định.

Tham số

first

  • Bidirectional Iterator trỏ đến phần tử đầu tiên trong phạm vi cần đảo ngược.

last

  • Bidirectional Iterator trỏ đến phần tử ngay sau phần tử cuối cùng trong phạm vi cần đảo ngược. Phạm vi là [first, last).

Giá trị trả về

Không có giá trị trả về

Đặc điểm

  1. Phạm vi [first, last) là "nửa mở", không bao gồm phần tử last.
  2. reverse() thay đổi trực tiếp thứ tự các phần tử trong phạm vi gốc, không tạo ra một phạm vi mới.
  3. reverse() yêu cầu Bidirectional Iterator, cho phép di chuyển theo cả hai hướng (tiến và lùi).
  4. Các kiểu dữ liệu của các phần tử cần hỗ trợ phép swap() (hoán đổi giá trị).
  5. reverse() thường được sử dụng để:
    • Đảo ngược thứ tự các phần tử trong một container (ví dụ: đảo ngược một vector, một string, một list).
    • Thay đổi thứ tự các phần tử trong một mảng.
    • Xử lý dữ liệu theo thứ tự ngược lại.
Phân biệt với reverse_copy()
  • reverse() đảo ngược thứ tự các phần tử tại chỗ (trong phạm vi gốc).
  • reverse_copy() tạo ra một bản sao của phạm vi với thứ tự các phần tử được đảo ngược, giữ nguyên phạm vi gốc.

Ví dụ

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};

// Đảo ngược thứ tự các phần tử trong numbers
std::reverse(numbers.begin(), numbers.end());

std::cout << "numbers after reverse: ";
for (int x : numbers) {
std::cout << x << " ";
}
std::cout << std::endl;

std::string str = "hello";

// Đảo ngược chuỗi str
std::reverse(str.begin(), str.end());

std::cout << "str after reverse: " << str << std::endl;

return 0;
}

Các hàm liên quan

reverse_copySao chép các phần tử từ một phạm vi (range) nguồn sang một phạm vi đích khác theo thứ tự đảo ngược
rotateXoay (rotate) các phần tử trong một phạm vi (range) sang trái
random_shuffleXáo trộn (shuffle) ngẫu nhiên các phần tử trong một phạm vi (range) được chỉ định
swapHoán đổi giá trị của hai đối tượng