大家主要看test02;我想实现自定义数据求并集该怎么做?
我已经重载了==运算符,还是报错
#include <iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<ctime>
#include<numeric>
using namespace std;
class Person
{
public:
Person()
{
}
Person(string name, int age);
~Person();
bool operator==(const Person& p) const
{
if (this->m_Age == p.m_Age && this->m_Name == p.m_Name)
return 1;
else
return 0;
}
int getAge()
{
return m_Age;
}
private:
string m_Name;
int m_Age;
friend void test02();
friend class MyPrint;
};
Person::Person(string name, int age)
{
this->m_Name = name;
this->m_Age = age;
}
Person::~Person()
{
}
class MyPrint
{
public:
void operator()(const Person& p)
{
cout << "姓名" << p.m_Name << "年龄 "<< p.m_Age << endl;
}
};
void myPrint(int value)
{
cout << value << " ";
}
void test01()
{
vector<int>v1,v2,v3;
for (int i = 1; i < 11; i++)
{
v1.push_back(i);
}
for (int i = 5; i < 16; i++)
{
v2.push_back(i);
}
cout << "v1" << endl;
for_each(v1.begin(), v1.end(), myPrint); cout << endl;
cout << "v2" << endl;
for_each(v2.begin(), v2.end(), myPrint); cout << endl;
cout << "交集为" << endl;
v3.resize(min(v1.size(), v2.size()));
vector <int>::iterator itEnd=set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
for_each(v3.begin(), itEnd, myPrint); cout << endl;
}
void test02()
{
vector<Person>v1,v2,v3;
char nameSeed[8][2] = { "A","B","C","D","E", "F", "G", "H" };
srand((unsigned int)time(NULL));
for (int i = 0; i < 8; i++)
{
int age = rand() % 100 + 1;
v1.push_back(Person((const char*)nameSeed[i], age));
}
Person pp("C", 0);
Person ppp("D", 9999);
v2.push_back(pp);
v2.push_back(ppp);
cout << "人员如下:" << endl;
for_each(v1.begin(), v1.end(), MyPrint()); cout << endl;
for_each(v2.begin(), v2.end(), MyPrint()); cout << endl;
v3.resize(min(v1.size(), v2.size()));
vector <Person>::iterator itEnd = set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
for_each(v3.begin(), itEnd, MyPrint()); cout << endl;
}
int main()
{
test01(); cout << endl;
//test02(); cout << endl;
std::cout << "Hello World!\n";
}
Person 类中 还缺少个 对 < 进行重载的函数
bool operator<(const Person& p) const
{
return this->m_Age < p.m_Age;
}