std::vector::swap
#include <vector>
void swap(vector& other) noexcept;
Hoán đổi nội dung của hai vector.
Tham số
other
- Một đối tượng
std::vector
cùng kiểu với vector hiện tại.
Giá trị trả về
Không có giá trị trả về
Đặc điểm
- Thực hiện bằng cách hoán đổi các con trỏ nội bộ, do đó, thời gian thực hiện là O(1).
- Không làm thay đổi kích thước hoặc phân bổ bộ nhớ mới, chỉ thay đổi nội dung dữ liệu.
- Không cần sao chép hoặc cấp phát lại dữ liệu.
- Sau khi gọi, hai vector sẽ tráo đổi toàn bộ dữ liệu, bao gồm cả:
- Các phần tử.
- Capacity (khả năng lưu trữ hiện tại của vector).
- Các iterator trỏ tới các phần tử của hai vector trước khi hoán đổi sẽ trở thành iterator của vector kia.
- Có thể sử dụng hàm toàn cục
std::swap
để hoán đổi hai vector, nhưng cần include thư viện:- Trước C++17:
std::swap
được định nghĩa trong<algorithm>
- Từ C++17 trở đi:
std::swap
được chuyển sang<utility>
- Trước C++17:
Ví dụ
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
vec1.swap(vec2);
std::cout << "vec1: ";
for (int num : vec1) {
std::cout << num << " "; // Kết quả: 4 5 6
}
std::cout << std::endl;
std::cout << "vec2: ";
for (int num : vec2) {
std::cout << num << " "; // Kết quả: 1 2 3
}
std::cout << std::endl;
return 0;
}
Sử dụng hàm toàn cục std::swap
để hoán đổi hai vector
#include <iostream>
#include <vector>
#include <algorithm> // Để sử dụng std::swap
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
std::swap(vec1, vec2);
std::cout << "vec1: ";
for (int num : vec1) {
std::cout << num << " "; // Kết quả: 4 5 6
}
std::cout << std::endl;
std::cout << "vec2: ";
for (int num : vec2) {
std::cout << num << " "; // Kết quả: 1 2 3
}
std::cout << std::endl;
return 0;
}