c++中set和multiset容器的区别和用法

当需要使用greater<int>时,在头文件里需要添加#include<functional>

  1. #include<iostream>

  2. #include<vector>

  3. #include<set>

  4. #include <functional>

  5.  
  6. using namespace std;

  7.  
  8. int main()

  9. {

  10. vector<int> data{1,4,3,8};

  11. //vector<int> d1(data.begin()+1, data.begin() + 3);

  12. multiset<int, greater<int> > test;

  13. for (int i = 0; i < data.size(); i++)

  14. {

  15. test.insert(data[i]);

  16. }

  17. return 0;

  18. }


得到test的结果为 8,4,3,1。

所以,添加greater<int> 会使得排序为降序排序。即更大的在前面。

一般不加第二个参数,会默认为是less<int>,即按升序排序。

注意:multiset和set会对插入的元素进行自动排序,比如下面我使用set将0,10,8,9, 1, 5, 2插入,然后打印set,看出来的结果是,这说明set会对插入其中的元素进行自动排好序。

程序:

#include<iostream>
#include<set>
#include<vector>
#include<functional>
using namespace std;

int main()
{
    vector<int>input_data1 = { 0,10,8,9,1,5,2};
    set<int, greater<int>>save1;

    vector<int>input_data2{0,1,1,10,10,7,6,9,11,2};
    multiset<int, greater<int>>save2;

    for (vector<int>::iterator it = input_data1.begin(); it != input_data1.end(); it++)
        save1.insert(*it);
    for (set<int, greater<int>>::iterator it = save1.begin(); it != save1.end(); ++it)
        cout << *it << " ";
    cout << endl;

    for (vector<int>::iterator it = input_data2.begin(); it != input_data2.end(); it++)
        save2.insert(*it);
    for (set<int, greater<int>>::iterator it = save2.begin(); it != save2.end(); ++it)
        cout << *it << " ";
    cout << endl;
    system("pause");
    return 0;
}
 

猜你喜欢

转载自blog.csdn.net/qq_33221533/article/details/82728723
今日推荐