gpt4 book ai didi

c++ - 从 value_type 获取 key_type

转载 作者:太空狗 更新时间:2023-10-29 21:20:18 26 4
gpt4 key购买 nike

我有一个在标准容器上运行的 X 类。以 value_type 作为参数的函数必须调用以 key_type 作为参数的函数。我怎么做?我看起来很基础。

template<typename C>
class X
{
void foo(typename C::value_type vt)
{
bar(vt.first); // this works for C = std::map
bar(vt); // this works for C = std::set
}
void bar(typename C::key_type kt)
{
...
}
};

最佳答案

添加一个 (private) bar 重载,它是一个函数模板并以 T::value_type 作为参数。

template<typename C>
class X
{
public:
void foo(typename C::value_type vt)
{
bar(vt);
}

void bar(typename C::key_type kt)
{}

private:
template<typename T = C>
void bar(typename T::value_type kt)
{
bar(kt.first);
}
};

C 是一个 std::map 时,对 foo 中的 bar 的调用将解析为成员函数模板,然后它将使用正确的参数调用其他 bar

C 是一个 std::set 时,对 bar 的调用将同时匹配 bar 重载, 但由于一个是成员函数模板,而另一个不是,因此后者将被认为是更好的匹配。

Live demo

关于c++ - 从 value_type 获取 key_type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24905553/

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