C++ 指定范围内递增初始化一个vector<int> | Python: list(range(31, 90))

2023-12-20 15:03:55

通过lambda表达式 + std::iota()实现:

template <typename Tp>
inline void print_vec(const std::vector<Tp>& vec) {
    fmt::print("[{}]\n", fmt::join(vec, ", "));
}


    // 相当于Python的`lst = list(range(31, 90))`
    const std::vector<int> vec = [] () {
        std::vector<int> vec(90 - 31);
        std::iota(vec.begin(), vec.end(), 31);  // 递增,初值为31
        return vec;
    }();  // 原理是定义一个lambda函数然后直接`()`调用
    
    print_vec(vec);

输出:

[31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 
51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 
61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 
71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 
81, 82, 83, 84, 85, 86, 87, 88, 89]

文章来源:https://blog.csdn.net/weixin_44220976/article/details/135104853
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。