pair中元素 由 vector和其他值组成,外层vector由 pair组成,实现查找功能。
#include <iostream>
#include <vector>
using namespace std;
class myClass
{
public:
myClass(int age, int year) : m_age(age), m_year(year)
{}
public:
int age() {return m_age;}
int year() {return m_year;}
private:
int m_age;
int m_year;
};
enum eSex
{
Man,
Womem,
};
typedef pair<vector<myClass>, eSex> studentPair;
#ifndef countof
#define countof(array) (sizeof(array)/sizeof(array[0]))
#endif
eSex findSex(vector<myClass>& vecData, vector<studentPair>& vecStudent)
{
for(auto it = vecStudent.begin(); it != vecStudent.end(); ++it)
{
if (vecData.size() == it->first.size())
{
size_t count = vecData.size();
for (size_t i = 0; i < count; ++i)
{
if (vecData.at(i).age() == it->first.at(i).age()
&& vecData.at(i).year() == it->first.at(i).year())
return it->second;
}
}
}
}
int main()
{
static myClass aaArray[] = {myClass(20, 1), myClass(22, 5)};
static myClass bbArray[] = {myClass(21, 2), myClass(18, 1)};
static myClass ccArray[] = {myClass(19, 1), myClass(23, 5)};
static studentPair myPair[] =
{
make_pair(vector<myClass>(aaArray, aaArray + countof(aaArray)),Man),
make_pair(vector<myClass>(bbArray, bbArray + countof(bbArray)),Womem),
make_pair(vector<myClass>(ccArray, ccArray + countof(ccArray)),Man),
};
static vector<studentPair> vecStudent(myPair, myPair + countof(myPair));
vector<myClass> vecTest;
vecTest.push_back(myClass(21, 2));
vecTest.push_back(myClass(18, 1));
eSex sex = findSex(vecTest, vecStudent);
cout << sex << endl;
return 0;
}