You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:05:10