【发布时间】:2018-09-06 04:06:05
【问题描述】:
我的目标是检查Person* 的向量中是否存在名称为person_name 的Person 对象。该向量按名称的字母顺序排序。制作一个临时的Person 是我见过的让这个lower_bound 调用与该名称一起工作的唯一方法。是否有更有效的方法来执行此操作,或者是否需要 temp 来执行比较?
//person_name is a string
Person temp(person_name);
auto it = lower_bound(personVec.begin(), personVec.end(), &temp, personCompare());
if (it != personVec.end() && (*it)->getName() == person_name) {}
else { return false; }
【问题讨论】:
-
如果您要经常查找名称,我建议使用 unordered_map。如果你不是,那么当你拥有的东西有效时,为什么还要担心找到不同的东西呢?把它放在一个辅助函数中然后忘记它,除非你分析它并且它是一个瓶颈。
标签: c++ search vector lower-bound