What happens when you attempt to compile and run the following code?
#include <deque>
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
class B { int val;
public:
B(int v):val(v){}
int getV() const {return val;} bool operator < (const B & v) const { return val<v.val;}
};
ostream & operator <<(ostream & out, const B & v) { out<<v.getV(); return out;} template<class T>struct Out { ostream & out;
Out(ostream & o): out(o){}
void operator() (const T & val ) { out<<val<<" "; }
};
int main() {
B t[]={8, 10, 5, 1, 4, 6, 2, 7, 9, 3};
B t1[]={B(1),B(2),B(3),B(4)};
deque<B> d1(t, t+10);
set<B> s1(t, t+10);
sort(d1.begin(), d1.end());
cout<<includes(d1.begin(),d1.end(), t1,t1+4)<<" "<<includes(s1.begin(),s1.end(), t1,t1+4)
<<endl;
return 0;
}
Program outputs:
Comments