【C/C++】initializer_list

initializer_list

1 构造函数场景

cpp 复制代码
class P {
public:
    P(int a, int b) {
        std::cout << "int, int" << std::endl;
    }

    P(std::initializer_list<int> initList) {
        std::cout << "initializer_list" << std::endl;
    }
};

调用:

cpp 复制代码
P p(1, 2);
P q{1, 2};
P r{1, 2, 4};
P s = {1, 2};
shell 复制代码
int, int
initializer_list
initializer_list
initializer_list

2 算法场景

cpp 复制代码
min({1, 2, 3});
max({1, 2, 3});

源码

cpp 复制代码
  // N2722 + DR 915.
  template<typename _Tp>
    _GLIBCXX14_CONSTEXPR
    inline _Tp
    min(initializer_list<_Tp> __l)
    { return *std::min_element(__l.begin(), __l.end()); }

  template<typename _Tp, typename _Compare>
    _GLIBCXX14_CONSTEXPR
    inline _Tp
    min(initializer_list<_Tp> __l, _Compare __comp)
    { return *std::min_element(__l.begin(), __l.end(), __comp); }

  template<typename _Tp>
    _GLIBCXX14_CONSTEXPR
    inline _Tp
    max(initializer_list<_Tp> __l)
    { return *std::max_element(__l.begin(), __l.end()); }

  template<typename _Tp, typename _Compare>
    _GLIBCXX14_CONSTEXPR
    inline _Tp
    max(initializer_list<_Tp> __l, _Compare __comp)
    { return *std::max_element(__l.begin(), __l.end(), __comp); }
相关推荐
海奥华22 分钟前
go中的接口返回设计思想
开发语言·后端·golang
lifallen4 分钟前
深入浅出 Arrays.sort(DualPivotQuicksort):如何结合快排、归并、堆排序和插入排序
java·开发语言·数据结构·算法·排序算法
运维开发王义杰4 分钟前
Python: 告别 ModuleNotFoundError, 解决 pipx 环境下 sshuttle 缺少 pydivert 依赖的终极指南
开发语言·python
k要开心5 分钟前
从C到C++语法过度1
开发语言·c++
小吕学编程8 分钟前
策略模式实战:Spring中动态选择商品处理策略的实现
java·开发语言·设计模式
whoarethenext15 分钟前
使用 C/C++的OpenCV 实时播放火柴人爱心舞蹈动画
c语言·c++·opencv
q5673152329 分钟前
IBM官网新闻爬虫代码示例
开发语言·分布式·爬虫
能工智人小辰30 分钟前
Codeforces Round 509 (Div. 2) C. Coffee Break
c语言·c++·算法
笨笨马甲35 分钟前
附加模块--Qt OpenGL模块功能及架构
开发语言·qt
梦星辰.38 分钟前
VSCode CUDA C++进行Linux远程开发
linux·c++·vscode