我正在写一个Queue类。我有两个版本的push_back用于新的C ++ 11标准。其中一个版本使用右值引用作为参数。我的版本有效,但我认为它必须缺少一些东西:
97 template <typename T>
98 void Queue<T>::push( T && val )
99 {
100 c.push_back( val );
101 }
似乎我应该使用std :: move,但我不确定如何实现它。上面函数中的c指的是封装在我的Queue类中的deque对象。任何帮助理解我应该做些什么来适当地构建这个功能将非常感激!
答案 0 :(得分:1)
是的,您需要std::move
,但您也可以在此使用emplace_back
:
template <typename T>
void Queue<T>::push( T && val )
{
c.emplace_back( std::move(val) );
}