gpt4 book ai didi

c++ - std::map 构造函数的奇怪用法

转载 作者:太空狗 更新时间:2023-10-29 19:59:55 24 4
gpt4 key购买 nike

我搜索了 std::map 运行时排序的实现并找到了这个解决方案: STL std::map dynamic ordering

我很清楚,但我不明白,怎么可能在 std::map 的构造函数中使用 OrderingType。 std::map 有一个构造函数,它获取一个比较器对象作为参数。所以从我的角度来看,使用这样的代码是正常的:

int main()
{
Ordering<int> test_ordering( ASCENDING );
CUSTOMMAP map1( test_ordering );

return 0;
}

但是上述主题中的代码也可以编译:

int main()
{
CUSTOMMAP map1( ASCENDING );
//...
return 0;
}

我不明白,它为什么有效:std::map 的构造函数不能获取 OrderingType 枚举的参数,而不是 Ordering 类对象本身。

最佳答案

如果 Ordering<int> 上的构造函数采用您的枚举的未声明为 explicit , 然后它被认为是一个“转换构造函数”,当编译器需要从您的枚举类型转换为 Ordering<int> 时可以自动插入类型。所以编译器有效地接受了这个:

CUSTOMMAP map1( ASCENDING );

并将其转化为:

CUSTOMMAP map1( Ordering<int>(ASCENDING) );

这称为隐式转换

关于c++ - std::map 构造函数的奇怪用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10034914/

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