【发布时间】:2016-01-28 18:25:58
【问题描述】:
我有以下代码来检查一个值是否属于一个值列表。例如:contains({1,2,3},3)。几乎总是,我可以写一堆if-elses。 contains 方法对性能有多大影响?有没有办法避免这种情况?
template<typename T1,typename T2>
std::enable_if_t<std::is_same<std::initializer_list<T2>,T1>::value, bool> contains(const T1 &container,const T2 &item)
{
return(std::find(container.begin(),container.end(),item)!=container.end());
}
【问题讨论】:
-
在投反对票之前,我会感谢 cmets 了解问题所在。
-
1.衡量 2。明确你如何衡量 3。然后问也许。
-
“几乎总是,我可以写一堆 if-else”是什么意思?据推测,
find_if还包含一堆“if-else”。你的意思是你总是将它应用到一个预先知道大小的微小序列上吗? -
@AmiTavory,不同的是 find_if 包含 loop。但是,正如我在回答中所展示的那样,循环展开是为了拯救。