Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để hiểu Multiset trong C ++ STL (Thư viện mẫu chuẩn).
Multiset là các vùng chứa liên kết tương tự như các tập hợp. Một điểm khác biệt mà multiset giữ lại là chúng thậm chí có thể chứa các giá trị trùng lặp.
Ví dụ
#include <iostream> #include <set> #include <iterator> using namespace std; int main(){ multiset <int, greater <int> > gquiz1; //inserting values gquiz1.insert(40); gquiz1.insert(30); gquiz1.insert(60); gquiz1.insert(20); gquiz1.insert(50); gquiz1.insert(50); gquiz1.insert(10); multiset <int, greater <int> > :: iterator itr; cout << "\nThe multiset gquiz1 is : "; for (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) { cout << '\t' << *itr; } cout << endl; multiset <int> gquiz2(gquiz1.begin(), gquiz1.end()); cout << "\nThe multiset gquiz2 after assign from gquiz1 is : "; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << '\t' << *itr; } cout << endl; cout << "\ngquiz2 after removal of elements less than 30 : "; gquiz2.erase(gquiz2.begin(), gquiz2.find(30)); for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << '\t' << *itr; } int num; num = gquiz2.erase(50); cout << "\ngquiz2.erase(50) : "; cout << num << " removed \t" ; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout << '\t' << *itr; } cout << endl; cout << "gquiz1.lower_bound(40) : "<< *gquiz1.lower_bound(40) << endl; cout << "gquiz1.upper_bound(40) : "<< *gquiz1.upper_bound(40) << endl; cout << "gquiz2.lower_bound(40) : "<< *gquiz2.lower_bound(40) << endl; cout << "gquiz2.upper_bound(40) : "<< *gquiz2.upper_bound(40) << endl; return 0; }
Đầu ra
The multiset gquiz1 is : 60505040302010 The multiset gquiz2 after assign from gquiz1 is : 10203040505060 gquiz2 after removal of elements less than 30 : 3040505060 gquiz2.erase(50) : 2 removed 304060 gquiz1.lower_bound(40) : 40 gquiz1.upper_bound(40) : 30 gquiz2.lower_bound(40) : 40 gquiz2.upper_bound(40) : 60