gpt4 book ai didi

c++ - 具有单个参数的 std::min() 的实现是什么?

转载 作者:太空狗 更新时间:2023-10-29 21:09:39 25 4
gpt4 key购买 nike

我在一段代码中看到了如下语句:

std::min(0);

我能找到的最接近的定义是:

template <class T> constexpr T min (initializer_list<T> il);

到目前为止,我在STL_algo.h中找到了实现:

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

我以前认为std::min()只是计算两项中的最小值。任何人都可以向我解释它实际上做了什么吗?什么是 initializer_list

最佳答案

要回答标题中的问题,当一组数字包含一个数字时,一组数字中的最小值就是数字本身。这对我来说很容易理解。希望您也能理解。

I used to think that std::min() only calculates the minimum of two items.

它曾经是,但从 C++11 开始,它发生了变化。从 C++11 开始,有

template< class T >
T min( std::initializer_list<T> ilist );

和一些变体。它可以用作:

std::min({num1, num2, ..., numn});

我很惊讶

std::min(0);

为你工作。它不应该。也许它作为非标准扩展被 g++ 支持。但是,您应该能够使用

std::min({0}); // That becomes an intializer_list<int> with one item.

这是符合标准的。

关于c++ - 具有单个参数的 std::min() 的实现是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57830760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com