我有一个类似
的结构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;
}
};
但这不起作用......任何帮助?