【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); }
相关推荐
CHEN5_02几秒前
【Java虚拟机】垃圾回收机制
java·开发语言·jvm
HalvmånEver27 分钟前
在 C++ :x86(32 位)和 x64(64 位)的不同
开发语言·c++·学习
amy_jork2 小时前
npm删除包
开发语言·javascript·ecmascript
浪成电火花3 小时前
(deepseek!)deepspeed中C++关联部分
开发语言·c++
茉莉玫瑰花茶3 小时前
Qt 常用控件 - 9
开发语言·qt
艾伦~耶格尔4 小时前
【数据结构进阶】
java·开发语言·数据结构·学习·面试
杜子不疼.4 小时前
《Python列表和元组:从入门到花式操作指南》
开发语言·python
WYH2875 小时前
C#控制台输入(Read()、ReadKey()和ReadLine())
开发语言·c#
祈祷苍天赐我java之术5 小时前
Java 迭代器(Iterator)详解
java·开发语言
秋氘渔5 小时前
综合案例:Python 函数知识整合 — 学生成绩管理系统
开发语言·python