错误 10 error C2676: 二进制“-”:“std::_Tree_const_iterator<_Mytree>”不定义该运算符或到预定义运算符可接收的类型的转换 d:\软件\vc\include\algorithm 3806 函数对象1
错误 11 error C2780: “void std::_Sort(_RanIt,_RanIt,_Diff)”: 应输入 3 个参数,却提供了 4 个 d:\软件\vc\include\algorithm 3806 函数对象1
#include<iostream>
#include<set>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
int a[]={1,2,1,3,4,5,8,7};
set<int> b(a,a+8);
cout<<b.size()<<endl;
sort(b.begin(),b.end(),greater<int>());//请问这里有错嘛
getchar();
return 0;
}
你无法用STL里的sort算法对容器set作排序。set本身就是一种有序的容器。 set主要用于不常变动的数据,对其数据的变动,只能是删除旧的,然后再插入新的,这点从它的iterator就能看出来,它的iterator是const的。你可以在初始化set的时候,指定比较排序的方法,或者干脆把set转换为其它容器(比如vector),然后再排序。 但无法再装入原来的set,因为原来的set的排序方法已被固化了。
set不支持,换成vector