The task is to implement vector with move operations and push_back for rvalue
template<typename T>
class Vector
{
private:
size_t size;
size_t capacity;
T* buffer;
public:
Vector(size_t s) {
size = 0;
capacity = s;
buffer = new T[capacity];
}
//Move constructor
Vector(Vector&& rhs): size(rhs.size),
capacity(rhs.capacity),
buffer(tmp.buffer)
{
rhs.buffer = nullptr;
}
T& operator=(Vector&& tmp) {
size = tmp.size;
capacity = tmp.capacity;
buffer = std::move(tmp.buffer);
return *this;
}
void push_back(const T& v) {
if (size >= capacity)
reserve(capacity + 5);
buffer[size++] = v;
}
void push_back(T&& v) {
if (size >= capacity)
reserve(capacity + 5);
buffer[size++] = v;
}
Have I implemented all move operations in my class Vector? Is it correct implementation of method push_back for rvalue ?
Aucun commentaire:
Enregistrer un commentaire