std::deque::swap
#include <deque>
void swap(deque& other);
Hoán đổi nội dung của hai deque với nhau.
Tham số
other
- Tham chiếu đến deque khác mà bạn muốn hoán đổi nội dung.
other
phải là một deque có cùng kiểu phần tử với deque hiện tại.
Giá trị trả về
Không có giá trị trả về
Đặc điểm
swap()
hoán đổi toàn bộ nội dung của hai deque, bao gồm tất cả các phần tử và kích thước của chúng.swap()
thường được thực hiện với độ phức tạpO(1)
- thời gian hằng số. Việc hoán đổi được thực hiện bằng cách trao đổi các con trỏ quản lý dữ liệu bên trong của hai deque, thay vì sao chép từng phần tử.swap()
không làm thay đổi (invalidate) các iterator, tham chiếu, hoặc con trỏ trỏ đến các phần tử của cả hai deque ngoại trừ iteratorend()
sẽ bị thay đổi.- Sau khi gọi
swap()
, các iterator, tham chiếu, và con trỏ ban đầu trỏ đến các phần tử của deque này sẽ trỏ đến các phần tử của deque kia. - Phiên bản non-member
swap
được đánh dấu lànoexcept
(kể từ C++11), nghĩa là nó được đảm bảo không ném ra ngoại lệ nào. Phiên bản thành viênswap
không được chỉ địnhnoexcept
trong tiêu chuẩn, nhưng thường các triển khai cũng cung cấpnoexcept
cho nó. - Ngoài hàm thành viên
swap()
, C++ còn cung cấp phiên bản non-memberstd::swap
(trong<algorithm>
) có thể được sử dụng để hoán đổi hai deque. Phiên bản non-member thường được ưu tiên hơn vì nó khái quát hơn và có thể hoạt động với nhiều kiểu dữ liệu khác.
Ví dụ
#include <iostream>
#include <deque>
int main() {
std::deque<int> deque1 = {1, 2, 3};
std::deque<int> deque2 = {4, 5, 6, 7};
std::cout << "deque1 before swap:";
for (int x : deque1) std::cout << ' ' << x;
std::cout << '\n';
std::cout << "deque2 before swap:";
for (int x : deque2) std::cout << ' ' << x;
std::cout << '\n';
deque1.swap(deque2); // Hoán đổi nội dung của deque1 và deque2
std::cout << "deque1 after swap:";
for (int x : deque1) std::cout << ' ' << x;
std::cout << '\n';
std::cout << "deque2 after swap:";
for (int x : deque2) std::cout << ' ' << x;
std::cout << '\n';
return 0;
}