c++中set和multiset容器的区别和用法
当需要使用greater<int>时,在头文件里需要添加#include<functional>
-
#include<iostream>
-
#include<vector>
-
#include<set>
-
#include <functional>
-
using namespace std;
-
int main()
-
{
-
vector<int> data{1,4,3,8};
-
//vector<int> d1(data.begin()+1, data.begin() + 3);
-
multiset<int, greater<int> > test;
-
for (int i = 0; i < data.size(); i++)
-
{
-
test.insert(data[i]);
-
}
-
return 0;
-
}
得到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;
}