C++中如何简洁检查整数是否属于临时集合?对标Python in操作
C++中检查整数是否在临时集合的简洁实现方式
当然有,以下几种方式比std::vector加std::find更简洁易读,适配不同C++版本:
C++20及以上:直接用
std::ranges::contains
范围库提供的contains函数可以直接配合初始化列表使用,写法最接近Python的风格:#include <ranges> if (std::ranges::contains({4, 6, 7}, i)) { // 你的逻辑代码 }这是最简洁的方案,不需要额外封装,语义清晰。
C++11及以上:自定义inline工具函数
封装一个轻量的辅助函数,复用性强,调用同样简洁:#include <algorithm> #include <initializer_list> inline bool is_in(int val, std::initializer_list<int> candidates) { return std::find(candidates.begin(), candidates.end(), val) != candidates.end(); } // 使用示例 if (is_in(i, {4, 6, 7})) { // 你的逻辑代码 }这个函数只需要定义一次,后续调用和Python的
in语法几乎一致。元素数量较少时:直接用逻辑或
如果临时集合的元素很少(比如3个以内),直接写逻辑判断反而最直观,不需要引入任何库函数:if (i == 4 || i == 6 || i == 7) { // 你的逻辑代码 }或者用lambda包装(适合需要复用这个判断逻辑的局部场景):
if ([](int val) { return val == 4 || val == 6 || val == 7; }(i)) { // 你的逻辑代码 }不推荐但可选:临时构造
std::set
这种写法简洁但效率稍低(因为要构造集合结构),适合对性能要求不高的场景:#include <set> if (std::set<int>{4, 6, 7}.count(i)) { // 你的逻辑代码 }
内容的提问来源于stack exchange,提问作者Nathaniel Bubis
相关产品推荐
相关产品推荐

