Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm multimap::crbegin() và multimap::crend() trong C++ STL

Trong bài viết này, chúng ta sẽ thảo luận về cách hoạt động, cú pháp và các ví dụ của hàm multimap::crbegin() và multimap::crend() trong C++ STL.

Multimap trong C++ STL là gì?

Multimap là container liên kết, tương tự như map. Nó lưu trữ các phần tử dạng cặp key-value theo thứ tự cụ thể. Multimap cho phép nhiều phần tử có cùng một key. Dữ liệu luôn được sắp xếp theo key.

Hàm multimap::crbegin() là gì?

multimap::crbegin() là hàm built-in trong C++ STL, được định nghĩa trong header <map>. crbegin() nghĩa là constant reverse begin (đầu ngược hằng), là ngược của cbegin(). Hàm trả về iterator hằng trỏ đến phần tử cuối cùng của multimap. Iterator này không thể dùng để sửa đổi multimap, chỉ dùng để duyệt.

Cú pháp

mutliMap_name.crbegin();

Tham số

Hàm này không nhận tham số nào.

Giá trị trả về

Trả về iterator trỏ đến phần tử cuối cùng của container.

Hàm multimap::crend() là gì?

multimap::crend() là hàm built-in trong C++ STL, được định nghĩa trong header <map>. crend() nghĩa là constant reverse end iterator (cuối ngược hằng), là ngược của cend(). Hàm trả về iterator hằng trỏ đến vị trí ngay trước phần tử đầu tiên (preceding first) của container. Iterator này không thể dùng để sửa đổi, chỉ dùng để duyệt.

Cú pháp

newmultimap.crend();

Tham số

Hàm này không nhận tham số nào.

Giá trị trả về

Trả về iterator trỏ đến vị trí trước phần tử đầu tiên của container.

Ví dụ minh họa

#include <bits/stdc++.h>
using namespace std;

int main() {
    // Tạo container
    multimap<int, int> mul;
    
    // Chèn bằng emplace_hint
    mul.emplace_hint(mul.begin(), 1, 10);
    mul.emplace_hint(mul.begin(), 2, 20);
    mul.emplace_hint(mul.begin(), 2, 30);
    mul.emplace_hint(mul.begin(), 1, 40);
    mul.emplace_hint(mul.begin(), 1, 50);
    mul.emplace_hint(mul.begin(), 5, 60);
    
    auto it = mul.crbegin();
    cout << "Phần tử cuối cùng dùng crbegin(): {" << it->first << ", " << it->second << "}\n";
    
    cout << "\nCác phần tử trong multimap (duyệt ngược):\n";
    cout << "KEY\tELEMENT\n";
    for (auto i = mul.crbegin(); i != mul.crend(); i++) {
        cout << i->first << "\t" << i->second << endl;
    }
    
    return 0;
}

Kết quả

Phần tử cuối cùng dùng crbegin(): {5, 60}
Các phần tử trong multimap (duyệt ngược):
KEY	ELEMENT
5	60
2	20
2	30
1	10
1	40
1	50