gpt4 book ai didi

c++ - 使用对索引的右值引用,有什么好处吗?

转载 作者:行者123 更新时间:2023-11-30 04:48:42 27 4
gpt4 key购买 nike

我想知道使用右值引用参数索引到容器对象而不是 const 引用是否有任何可能的好处:

Foo::bar(T1&& i, T2&& x)
{
m_data[i].emplace_back(std::move(x));
}

在哪里m_datastd::unordered_map<T1, std::vector<T2>> . i 对我来说似乎更自然类型为 const T1& , 但我对 move 语义的了解还不够,无法知道 T1&&有没有好处(假设T1和T2是重类型)。

编辑:在我的用例中,T1 是 std::pair<enums, std::string> T2 是自定义类的 shared_ptr。

最佳答案

假设 T1T2 是模板参数,当您的参数传递给其他函数时最好使用完美转发。

Foo::bar(T1&& i, T2&& x)
{
m_data[std::forward<T1>(i)].emplace_back(std::forward<T2>(x)));
}

那么,T1T2 是基本类型、POD 类型还是复杂类都没有关系。 ix 是通过左值引用还是右值引用传递并不重要。

关于c++ - 使用对索引的右值引用,有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55738029/

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