素胚勾勒不出你
这是C ++ 11中的一种使用方法std::initializer_list:#include <algorithm>#include <initializer_list>template <typename T>bool is_in(const T& v, std::initializer_list<T> lst){ return std::find(std::begin(lst), std::end(lst), v) != std::end(lst);}这样,您可以执行以下操作:if (is_in(num, {1, 2, 3})) { DO STUFF }但是,当不与内置类型一起使用时,效率不是很高。int可以正常工作,但是std::string例如,如果您比较变量,则生成的代码简直糟透了。但是,在C ++ 17中,您可以改用效率更高的解决方案,该解决方案适用于任何类型:template<typename First, typename ... T>bool is_in(First &&first, T && ... t){ return ((first == t) || ...);}// ...// s1, s2, s3, s4 are strings.if (is_in(s1, s2, s3, s4)) // ...在C ++ 11版本将是非常低效的位置,而这个版本应该产生相同的代码手写比较。