gpt4 book ai didi

c++ - C++ 中的 key_compare 与 key_comp

转载 作者:搜寻专家 更新时间:2023-10-31 00:14:50 24 4
gpt4 key购买 nike

假设我想对具有依赖于键比较器的通用类型的集合对象执行一些操作。

下面两种实现方式有区别吗?

template <class SetType, class KeyType>
bool CompareFirst1(SetType set, KeyType key)
{
return typename SetType::key_compare()(*set.begin(), key);
}

template <class SetType, class KeyType>
bool CompareFirst2(SetType set, KeyType key)
{
return set.key_comp()(*set.begin(), key);
}

最佳答案

是的。第一个默认构造一个新对象,该类型用作 Set 的比较对象。第二个返回并使用集合正在使用的比较对象的拷贝。

不同之处在于,如果用户在构造期间传入比较对象,它可能具有与默认构造的比较对象不同的内部状态。或者甚至可能无法默认构造该对象。您想使用第二种形式。

关于c++ - C++ 中的 key_compare 与 key_comp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21604319/

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