c++ - 不使用 C++11 移动 vector

标签 c++

假设我有这样的东西:

struct Foo
{
    void Bar (std::vector <int> &vec) ;
    std::vector <int> m_vec ;
};

void Foo::Bar (std::vector <int> &vec)
{
    // Do stuff...

    m_vec = std::move (vec) ;
}

有什么方法可以模拟 m_vec = std::move (vec) ; 行吗? ?假设传入的 vec 是在堆栈上分配的。

最佳答案

也许是这样的:

void Bar(std::vector<int> & vec)
{
    m_vec.swap(vec);
    std::vector<int>().swap(vec);  // clear "vec"
}

关于c++ - 不使用 C++11 移动 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22692039/

相关文章:

c++ - spoj STRHH,无法找到错误。为什么开头多了 "endl"

c++ - 将元素添加到二维数组 C++

java - 游戏开发 : (Java & OpenGL) or (C++ & OpenGL & SDL)?

c++ - C2061 : syntax error : identifier '_TCHAR'

C++ 指针声明和赋值

c++ - 没有已知的参数 1 从 ‘Image*’ 到 ‘const Image&’ 的转换

c++ - 按位和移位操作数以清除选定的十六进制数

c++ - 既然 C++ 知道类型,它能推断出点和箭头吗?

c# - 对于小型密集型任务,C# 的性能与 C++ 的性能有多接近?

c# - 从 C# 中列出非 .NET DLL 函数