gpt4 book ai didi

带有初始化列表的 C++ 的 max() 返回乱序的字符串

转载 作者:可可西里 更新时间:2023-11-01 15:37:37 24 4
gpt4 key购买 nike

max({"a", "b", "z", "x"});  returns "x"

同时两者

max<std::string>({"a", "b", "z", "x"});

max({'a', 'b', 'z', 'x'});

按他们应该的方式返回“z”。为什么?

最佳答案

"a" , "b"等是字符串文字。这些衰减到 const char*在初始化列表中时。 max just 可能获得地址最高的那一个,但因为它使用 operator<比较它们,并且它们不是同一个数组的一部分,也不是同一个数组的一部分,比较的结果是未指定的(并且调用 max 将导致未定义的行为 ,因为要求类型为 LessThanComparable )。

另外两次调用 max定义明确。 chara , b等是具有明确定义的小于比较的整数类型。和 std::string有一个 operator<实现词典比较。

关于带有初始化列表的 C++ 的 max() 返回乱序的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31164763/

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