</pre><pre name="code" class="cpp">
#include <iostream>
#include <string>
#include <functional>
#include <list>
#include <vector>
#include <algorithm>
using namespace std;
typedef struct _tagSyncTable
{
int nType; //主表类型
string strName; //主数据表名
string strOrderBy; //排序方式
_tagSyncTable(int type, string name = "", string OrderBy = "")
{
nType = type;
strName = name;
strOrderBy = OrderBy;
}
_tagSyncTable(){}
}SyncTable;
//查找类
class FindType
{
public:
bool operator()(SyncTable& dValue)
{
return dValue.nType == m_val.nType;
}
static void SetSyncTable(SyncTable dval)
{
m_val = dval;
}
private:
static SyncTable m_val;
};
SyncTable natvalue,destvalue;
SyncTable FindType::m_val = natvalue;
int main(int argc, char* argv[])
{ vector <SyncTable> userList;
SyncTable tempnat;
SyncTable st;
st.nType = 15;
st.strName = "t_bas_ShopGoods";
st.strOrderBy = "GoodsId";
userList.push_back(st);
st.nType = 16;
st.strName = "t_bas_myCategory";
st.strOrderBy = "myCatId";
userList.push_back(st);
st.nType = 17;
st.strName = "t_pos_PresetGoods";
st.strOrderBy = "GoodsId";
userList.push_back(st);
st.nType = 16;
FindType::SetSyncTable(st);
vector <SyncTable>::iterator it=find_if(userList.begin(), userList.end(), FindType()) ;
if(it!=userList.end())
{
SyncTable st = *it;
cout << "Type=" << st.nType << '\t' << "Name=" << st.strName << '\t' << "OrderBy=" << st.strOrderBy << endl;
}
return 0;
}