【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); }
相关推荐
CVer儿6 分钟前
起源引擎harmmer++ 配置
开发语言
星夜离尘5611 分钟前
MATLAB FFT 单边幅度谱:归一化、奇偶长度与频谱泄漏的完整实验
开发语言·matlab·信号处理·频谱分析·fft
fpcc11 分钟前
c++20新功能—std::osyncstream
c++·c++20
H.莓飛12 分钟前
【C++】模板初阶
linux·开发语言·c++·visual studio
十五年专注C++开发14 分钟前
基于Asio2实现http服务器的实践总结(二)
服务器·c++·http·asio2
Wang's Blog17 分钟前
Java 项目实战: 交友项目 - 项目模块划分与依赖关系
java·开发语言·交友
技术不好的崎鸣同学18 分钟前
第七章:模块踩踏以覆写导出函数绕过CFG
c++·windows·安全·系统安全
努力进修18 分钟前
时序数据长期承载难题:从压缩、批量写入到数据组织优化
java·开发语言·数据库
miofly18 分钟前
GitHub 今日推荐|ps2-web-recomp:浏览器里跑 PS2 游戏的静态重编译方案
c++·开源·github
星夜离尘5618 分钟前
MATLAB 5 点滑动平均:filter 与 conv 的输出对齐,以及 2 样本延时的含义
开发语言·算法·matlab·滤波·fir