std::multimap::swap
#include <map>
Hoán đổi nội dung của hai std::multimap với nhau.
void swap(multimap& other);
Tham số
other
- Tham chiếu đến std::multimap khác mà bạn muốn hoán đổi nội dung.
other
phải là một std::multimap có cùng kiểu tham số với std::multimap hiện tại.
Giá trị trả về
Không có giá trị trả về
Đặc điểm
- Hoán đổi nội dung:
swap()
hoán đổi toàn bộ nội dung của hai std::multimap, bao gồm tất cả các phần tử, kích thước, hàm so sánh và bộ cấp phát của chúng. - noexcept: Kể từ C++17, nếu 2 multimap có cùng allocator thì
swap()
được đánh dấu lànoexcept
, nghĩa là nó được đảm bảo không ném ra ngoại lệ nào. Trước C++17, hoặc khi 2 multimap có allocator khác nhau, nó có thể ném ngoại lệ. - An toàn: 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 std::multimap này sẽ trỏ đến các phần tử của std::multimap kia. - Phiên bản non-member std::swap: Ngoài hàm thành viên
swap()
, C++ còn cung cấp phiên bản non-member std::swap (trong<algorithm>
và<map>
) có thể được sử dụng để hoán đổi hai std::multimap. 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. - Hiệu quả:
swap()
đượ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 std::multimap, thay vì sao chép từng phần tử.
Ví dụ
#include <iostream>
#include <map>
int main() {
std::multimap<std::string, int> mmap1 = {{"apple", 1}, {"banana", 2}, {"apple", 3}};
std::multimap<std::string, int> mmap2 = {{"grape", 4}, {"kiwi", 5}, {"orange", 6}};
std::cout << "mmap1 before swap:\n";
for (const auto& pair : mmap1) {
std::cout << pair.first << ": " << pair.second << '\n';
}
// Output:
// mmap1 before swap:
// apple: 1
// apple: 3
// banana: 2
std::cout << "mmap2 before swap:\n";
for (const auto& pair : mmap2) {
std::cout << pair.first << ": " << pair.second << '\n';
}
// Output:
// mmap2 before swap:
// grape: 4
// kiwi: 5
// orange: 6
mmap1.swap(mmap2); // Hoán đổi nội dung của mmap1 và mmap2
std::cout << "mmap1 after swap:\n";
for (const auto& pair : mmap1) {
std::cout << pair.first << ": " << pair.second << '\n';
}
// Output:
// mmap1 after swap:
// grape: 4
// kiwi: 5
// orange: 6
std::cout << "mmap2 after swap:\n";
for (const auto& pair : mmap2) {
std::cout << pair.first << ": " << pair.second << '\n';
}
// Output:
// mmap2 after swap:
// apple: 1
// apple: 3
// banana: 2
return 0;
}