在vs2013中,c++中set容器定义对象时,参数列表中显式调用greater无法被识别,什么原因?

#include<iostream>#include<algorithm>#include<set>#include<iterator>usingnamespacestd... #include<iostream>
#include<algorithm>
#include<set>
#include<iterator>
using namespace std;
using std::greater;

template <class T>

void print_set(const T&s, const char *sr)
{
ostream_iterator<T::value_type>out(cout," ");
cout << sr;
copy(s.begin(),s.end(),out);
cout << endl;
}

int main()
{
typedef set<int>Se;
Se s1;
pair<Se::const_iterator, bool>p1;
for (int i = 3; i > 0; i--)
{
p1 = s1.insert(i);
if (p1.second)
{
cout << *(p1.first) << " true" << endl;
}
}

p1 = s1.insert(2);
if (p1.second)
{
cout << *(p1.first) << " true" << endl;
}
else
cout << "eorror" << endl;

print_set(s1, "s1:");

cout << "-----------------------" << endl;

typedef set<double, greater<int>>Sd;
Sd s2;
for (int i = 0; i < 3; i++)
{
s2.insert(i*0.3);
print_set(s2,"s2:");
}
if (s2.find(1.5) != s2.end())
{
cout << "存在1.5这个数" << endl;
}
if (s2.find(3.5) == s2.end())
{
cout << "不存在3.5这个数" << endl;
}
cout << "-----------------------" << endl;
getchar();
}
展开
 我来答
百度网友96ffcf7
2015-04-06 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118724
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部
定义了构造函数,系统就不会用默认的构造函数了。 代码中你定义了自己的带参构造函数,所以系统的默认构造函数就在编译时,不会生成了。 这个就需要自己定义了。 否则的话,Date a;这样使用的时候就会报错。
匿名用户
2015-04-06
展开全部
包含头文件#include<functional>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式