如果我有一个for
循环从数据文件读取,并且每次我有多个变量,比如jet1_emfr, jet2_emfr, ...
,如果N
是这些变量的数量,我使用了像
vector<double> jet_emfr;
osstringstream oss;
for( int i = 0; i < N; i++ ){
oss << "jet" << i << "_emfr";
jet_emf.push_back(oss.str());
oss.str("");
}
存储它们,这是最好的方法吗?如果我想将变量的名称与其值相关联,我的意思是,我创建了一个map
map<string,TLorentzVector> map_jets;
map_jets["jet1"] = jet1_mom;
map_jets["jet2"] = jet2_mom;
map_jets["jet3"] = jet3_mom;
...
并使用vector<pair<string,double> > jets_pt
将jet1
与jet1_mom.Pt()
给出的值相关联,现在我需要强加一个条件,即每当jet_emfr[i] < 0.4
我必须擦除(或不store){from {)jet?_mom.Pt()
中相应jets_pt
的值。
答案 0 :(得分:1)
我发现您使用的数据结构没有任何问题。 使用std :: vector来保存你的double值绝对是一个很好的方法。 使用std :: map将数据与字符串相关联也是存储关联的好方法。
答案 1 :(得分:0)
如果您关心的是拥有动态变量,并且能够将“id”“链接”到“值”......我认为您最好使用undordered_map
/ { {1}}。顾名思义,这些不是“排序/排序”。 - 所以在O(1)时间内查找(和插入等)。
特别是当数字变得非常大时,无序地图可能会比普通地图更快。
否则,法线贴图听起来不错。根据您的需要,您应该使用字符串,或者使用密钥的枚举。