我是经验有限的C ++程序员。
假设我想使用STL map
存储和操作某些数据,我想知道这两种数据结构方法之间是否存在任何有意义的差异(在性能上):
Choice 1:
map<int, pair<string, bool> >
Choice 2:
struct Ente {
string name;
bool flag;
}
map<int, Ente>
具体来说,使用a struct
而不是simple会产生任何开销pair
吗?
std::pair
是一个模板。std::pair<string, bool>
是一个结构。
pair
完全没有语义。e.first
除非您明确指出,否则没有人阅读您的代码(包括将来的代码),不会知道这就是名称。我坚信这pair
是对的补充std
,而且非常懒惰,当它被构想时,没有人想到“但有一天,每个人都将用它来做两件事,而且没人会知道任何人的代码意味着什么”。
map
迭代器这样的事情并不是有效的异常,还是太糟糕了。(“第一个” =键,“第二个” =值...真的std
吗?真的吗?)
std::pair
是一个结构。