C++ 同时在struct vector中查找多个元素

C++ 同时在struct vector中查找多个元素,c++,struct,C++,Struct,我有一个类似的结构 struct Event { std::string name; int date; int number; int event; }; 接下来,将解析一个文本文件,该文件有三列,以“:”分隔,使用类似ifstream的 while (getline(EventsFile, line)) { std::vector<std::string> columns = split(line,':');

我有一个类似的结构

struct Event {
    std::string name;
    int date;
    int number;
    int event;
};
接下来,将解析一个文本文件,该文件有三列,以“:”分隔,使用类似ifstream的

while (getline(EventsFile, line))
    {
        std::vector<std::string> columns = split(line,':');
        Event events_;

        events_.name     = "Test";
        events_.date     = std::stoi(columns[0]);
        events_.number   = std::stoi(columns[1]);
        events_.event = std::stof(columns[2]);

        EventList.push_back(events_);
    }

但这不起作用……有什么帮助吗?

链表的速度很慢,除非您需要在结束前插入/删除链表,否则应避免使用。向量可能会更快,但无法消除对每个元素执行线性搜索的事实。您可以使用适当的键将元素存储在
std::map
中,这样会更有效,或者使用排序向量并执行二进制搜索。到底什么不起作用?您的
操作符()不正确。它永远不会返回错误。(您应该会得到一个编译器警告。)如果
if
,只需返回bool表达式
return run==a.run&&date==b.date&&event==c.event
我假设您正在将其与
std::find_if
一起使用?我得到的结果类似于
错误:请求“a”中的成员“run”,这是非类类型“const int”
,对于其他定义的参数也是如此
for (const Event & m: EventList)
        {
        if (m.date == info1 && m.number==info2 && m.event == info3)
        cout<<"=========================================== >>>>>>>>>>>>  "<<m.name<<"  "<<m.run<<"  "<<m.lumi<<"  "<<m.eventrn<<endl;
        }
struct find_element
{
    int run;
    int date;
    int event;
    find_element(int run,int date,int event) : run(run),date(date),event(event) {}
    bool operator () ( const int& a , const int &b, const int &c)
    {
        if (run==a.run && date==b.date && event == c.event)
        return true;
    }
};