您的位置:首页 > 其它

vector查找结构体实例find_if

2015-11-24 19:20 507 查看
</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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: