这是存储可变数量变量的最好方法
Which is the best way to store a variable number of variables?
如果我有一个从数据文件中读取的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
必须擦除(或不存储)jets_pt
中对应的jet?_mom.Pt()
的值。
我看不出您使用的数据结构有什么问题。使用std::vector来保存双精度值绝对是一种好方法。使用std::map将数据与字符串相关联也是存储这种关联的好方法。
如果所有你关心的是有动态变量,并能够"链接"一个"id"到一个"值"…我认为你最好使用undordered_map
/hash_map
。顾名思义,这些不是"排序/有序"的。-因此查找(和插入等)在O(1)时间内完成。
特别是当数字变得非常大时,无序映射可能比正常映射更快。
否则,法线映射听起来不错。根据您的需要,您应该使用字符串,或者可能使用enum作为key。
相关文章:
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 枚举环境变量的惯用C++14/C++17方法
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 从私有成员变量的成员方法返回unique_ptr
- 在派生类中使用基类的私有成员变量的最佳方法
- 打印所有继承的类成员变量和方法
- C++方法中的引用变量
- Visual C++: MSVC vs. GCC+CLANG: 处理 lambda 捕获类成员变量,正确的方法是什么?
- 有没有一种通用的方法来实现不变量
- 有没有将变量名称转换为双指针的简短方法?
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 比较C++变量的最有效方法
- 使用类在C++中存储和列出变量/方法是否是一种好的做法
- 存储变量的更有效方法是什么?
- 对具有相同方法的不同类使用一个变量
- 如何使用另一个变量访问对象的变量/方法
- C++,静态局部变量(方法)与全局(文件)变量有什么区别
- Awesomium允许我在JS中调用/使用c++变量/方法吗?