bool xInItems = std::find(items.begin(), items.end(), x) != items.end();
有没有更简洁的方法来检查x是否在items中?这种方式似乎过于冗长(重复了三次items),使得代码的意图有点难以阅读。
例如,是否存在以下类似的方法:
bool xInItems = boost::contains(items, x);
如果没有更简洁的boost/stl算法来检查集合是否包含某个项,那么使用一个辅助函数来启用contains(items, x)
是好还是坏的做法呢?
我是否使用了错误的STL容器?即使使用std::set也会导致 bool xInItems = items.find(x) != items.end();
这仍然显得冗长。我是否想错了呢?
std::set
,也许可以使用bool xInItems = (items.count(x) == 1);
。对于其他情况,boost::find
可能是最好的选择。 (STL 和 boost 都有一个count()
,但它们不够高效,因为它们必须遍历整个范围。) - T.C.