- 论坛徽章:
- 0
|
本帖最后由 sytpb 于 2015-12-24 17:51 编辑
#include "stdafx.h"
#include <set>
#include <algorithm>
namespace Trade{
typedef struct _HandiCap
{
long price;
long qty;
struct _HandiCap(long p):price(p){qty=0;}
struct _HandiCap(long p,long q):price(p),qty(q){}
struct _HandiCap& operator=(const struct _HandiCap& rhs){
if(this == &rhs)
return *this;
price = rhs.price;
qty = rhs.qty;
return *this;
}
bool operator<(struct _HandiCap const& rhs)const{
return price < rhs.price;
}
}*PHandiCap,HandiCap;
}
void test()
{
std::set<Trade::HandiCap> cap1,cap2;
cap1.insert(Trade::HandiCap(1,1));
cap1.insert(Trade::HandiCap(2,2));
cap1.insert(Trade::HandiCap(3,3));
cap2.insert(Trade::HandiCap(1,1));
cap2.insert(Trade::HandiCap(2,2));
cap2.insert(Trade::HandiCap(3,3));
std::set<Trade::HandiCap> cap3(cap1);
std::set_intersection(cap2.begin(),cap2.end(),cap1.begin(),cap1.end(),cap3.begin()); //此行报错, 求cap1,cap2交集
}
没搞明白,求教一下。
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm(4494): error C2678: 二进制“=”: 没有找到接受“const Trade::_HandiCap”类型的左操作数的运算符(或没有可接受的转换)
1> d:\work\svn\simulation\tradingproject\apex_adapter\trade_center.h(5 : 可能是“Trade::_HandiCap &Trade::_HandiCap: perator =(const Trade::_HandiCap & ”
1> 尝试匹配参数列表“(const Trade::_HandiCap, const Trade::_HandiCap)”时
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm(4522): 参见对正在编译的函数 模板 实例化“_OutIt std::_Set_intersection<_InIt1,_InIt2,_OutIt>(_InIt1,_InIt1,_InIt2,_InIt2,_OutIt)”的引用
1> with
1> [
1> _OutIt=std::_Tree_const_iterator<std::_Tree_val<std::_Tset_traits<Trade::HandiCap,std::less<Trade::HandiCap>,std::allocator<Trade::HandiCap>,false>>>,
1> _InIt1=std::_Tree_unchecked_const_iterator<std::_Tree_val<std::_Tset_traits<Trade::HandiCap,std::less<Trade::HandiCap>,std::allocator<Trade::HandiCap>,false>>>,
1> _InIt2=std::_Tree_unchecked_const_iterator<std::_Tree_val<std::_Tset_traits<Trade::HandiCap,std::less<Trade::HandiCap>,std::allocator<Trade::HandiCap>,false>>>
|
|