在给定内部字段数据,大小和容量的情况下,如何为std :: vector实现移动原理图? 如何使这个线程安全?
#include <utility>
class vec {
public:
vec(vec&& o) : size(o.size), capacity(o.capacity), data(std::move(o.data))
{}
vec& operator=(vec&& o)
{
if (this != &o) {
size = o.size;
capacity = o.capacity;
delete[] data;
data = o.data;
o.data = nullptr;
}
return *this;
}
vec(vec&) = delete; // disable copying
vec& operator=(vec&) = delete;
vec& operator=(vec&) const = delete;
int* data;
size_t size;
size_t capacity;
};
答案 0 :(得分:3)
几点:
std::move
。你会的
使用data = o.data
指定指针,然后手动将旧指针设置为空o.data = nullptr
。