【发布时间】:2018-03-26 09:34:00
【问题描述】:
我有一个基于变量排序的结构向量。
例如:
struct Client {
string name;
int sm_index;
int client_id;
int user_id;
Client(string str, int x, int y, int c) : name(str), sm_index(x), client_id(y),user_id(c){}
}
根据sm_index
排序我如何找到并获取 sm_index 与我们的目标结构匹配的结构的数据。
我们有以下向量,没有。添加到其中的结构。
例如:
vector <client> CLIENT;
CLIENT.push_back(Client("Rahul",8,1,13));
CLIENT.push_back (Client("Sahil",12,3,12));
CLIENT.push_back (Client("Ramesh",1,4,11));
CLIENT.push_back (Client("Suresh",5,5,10));
CLIENT.push_back (Client("Ganesh",86,6,9));
CLIENT.push_back (Client("Gagan",4,7,8));
如何找到sm_index值为5的结构体。
我尝试了 find() 函数,但无法理解如何使用它。
【问题讨论】:
-
将
std::find_if与合适的函子一起使用或lambda。 -
find_if(CLIENT.cbegin(), CLIENT.cend(), [](const auto& v) { return v.sm_index == 5; } -
如果
CLIENT具有实体语义,则覆盖operator==是有意义的,并允许std::find搜索特定客户。 -
您说“基于
sm_index排序”,但在您的示例中,向量未按sm_index排序。向量是否已排序会影响使用哪种算法。 -
我的向量使用以下代码根据 sm_index 进行排序:std::sort(CLIENT.begin(), CLIENT.end());重载 bool operator
标签: c++ search vector find structure