在struct vector中同时找到多个元素

时间:2015-10-27 19:22:16

标签: 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,':');
        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_);
    }

到目前为止,非常好 - 接下来,如果记录A:B:C存在,我需要对另一个列表进行交叉检查 - 最简单的方法是做(if1,info2,info3是第二个文本中的列)文件再次使用ifstream解析,但这很简单所以我不发布详细信息)

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;
        }

这是一个非常缓慢的过程,所以我尝试制作一个新的结构,如果A == info1&amp;&amp; B = info2&amp;&amp; C = info3 like

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;
    }
};

但这不起作用......任何帮助?

0 个答案:

没有答案