Changeset View
Changeset View
Standalone View
Standalone View
src/prevector.h
Show First 20 Lines • Show All 511 Lines • ▼ Show 20 Lines | iterator erase(iterator first, iterator last) { | ||||
} | } | ||||
} else { | } else { | ||||
_size -= last - p; | _size -= last - p; | ||||
} | } | ||||
memmove(&(*first), &(*last), endp - ((char *)(&(*last)))); | memmove(&(*first), &(*last), endp - ((char *)(&(*last)))); | ||||
return first; | return first; | ||||
} | } | ||||
void push_back(const T &value) { | template <typename... Args> void emplace_back(Args &&... args) { | ||||
size_type new_size = size() + 1; | size_type new_size = size() + 1; | ||||
if (capacity() < new_size) { | if (capacity() < new_size) { | ||||
change_capacity(new_size + (new_size >> 1)); | change_capacity(new_size + (new_size >> 1)); | ||||
} | } | ||||
new (item_ptr(size())) T(value); | new (item_ptr(size())) T(std::forward<Args>(args)...); | ||||
_size++; | _size++; | ||||
} | } | ||||
void push_back(const T &value) { emplace_back(value); } | |||||
void pop_back() { erase(end() - 1, end()); } | void pop_back() { erase(end() - 1, end()); } | ||||
T &front() { return *item_ptr(0); } | T &front() { return *item_ptr(0); } | ||||
const T &front() const { return *item_ptr(0); } | const T &front() const { return *item_ptr(0); } | ||||
T &back() { return *item_ptr(size() - 1); } | T &back() { return *item_ptr(size() - 1); } | ||||
▲ Show 20 Lines • Show All 75 Lines • Show Last 20 Lines |