【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); }
相关推荐
明月看潮生4 分钟前
青少年编程与数学 02-019 Rust 编程基础 14课题、并发编程
开发语言·青少年编程·rust·编程与数学
Warren9816 分钟前
Java面试八股Spring篇(4500字)
java·开发语言·spring boot·后端·spring·面试
晚秋大魔王21 分钟前
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——gnutls
java·开发语言
EelBarb22 分钟前
python:一个代理流量监控的媒体文件下载脚本
开发语言·python
fancy16616629 分钟前
搜索二维矩阵 II
c++·算法·矩阵
freyazzr31 分钟前
Leetcode刷题 | Day63_图论08_拓扑排序
数据结构·c++·算法·leetcode·图论
背帆33 分钟前
go的interface接口底层实现
开发语言·后端·golang
小屁孩大帅-杨一凡44 分钟前
一个简单点的js的h5页面实现地铁快跑的小游戏
开发语言·前端·javascript·css·html
顾子茵1 小时前
c++从入门到精通(四)--动态内存,模板与泛型编程
java·开发语言·c++
电信2301杨臣1 小时前
QT---信号与槽
开发语言·qt