7 #pragma warning(disable : 4365 4987)
26template<
typename T,
class TAllocator>
29 static_assert(std::is_trivial<T>::value,
"Uninitialized vector doesn't support non-trivial types.");
62 if ((
data() !=
nullptr) && (source !=
nullptr)) {
67 template<
typename TIterator>
69 DynArray{
static_cast<std::size_t
>(std::distance(start,
end)), allocator} {
71 #if defined(_MSC_VER) && !defined(__clang__)
83 if ((
data() !=
nullptr) && (rhs.
data() !=
nullptr)) {
90 std::swap(
alloc, tmp.alloc);
91 std::swap(
ptr, tmp.ptr);
92 std::swap(
sz, tmp.sz);
101 std::swap(
alloc, rhs.alloc);
102 std::swap(
ptr, rhs.ptr);
103 std::swap(
sz, rhs.sz);
107 std::swap(
alloc, rhs.alloc);
108 std::swap(
ptr, rhs.ptr);
109 std::swap(
sz, rhs.sz);
139 assert(index <
size());
140 return data()[index];
144 assert(index <
size());
145 return data()[index];
178 assert(
ptr !=
nullptr);
179 if (old !=
nullptr) {
197 assert(
ptr !=
nullptr);
198 if (old !=
nullptr) {
205 template<
typename TIterator>
208 #if defined(_MSC_VER) && !defined(__clang__)
Resizable array-like abstraction for trivial-types only.
Definition: DynArray.h:27
DynArray & operator=(const DynArray &rhs)
Definition: DynArray.h:88
void resize_uninitialized(std::size_t size)
Definition: DynArray.h:191
DynArray(DynArray &&rhs) noexcept
Definition: DynArray.h:96
const value_type * end() const
Definition: DynArray.h:168
DynArray(const DynArray &rhs)
Definition: DynArray.h:82
DynArray(const value_type *source, std::size_t size, const allocator_type &allocator=allocator_type{})
Definition: DynArray.h:59
std::unique_ptr< value_type, std::function< void(value_type *)> > pointer_type
Definition: DynArray.h:35
std::size_t size() const
Definition: DynArray.h:130
value_type * end()
Definition: DynArray.h:152
DynArray(std::size_t size, const allocator_type &allocator=allocator_type{})
Definition: DynArray.h:47
allocator_type get_allocator() const noexcept
Definition: DynArray.h:113
DynArray()
Definition: DynArray.h:44
value_type * data()
Definition: DynArray.h:122
DynArray(const allocator_type &allocator)
Definition: DynArray.h:38
allocator_type alloc
Definition: DynArray.h:225
void clear()
Definition: DynArray.h:117
std::size_t sz
Definition: DynArray.h:226
const value_type * data() const
Definition: DynArray.h:126
void assign(TIterator start, TIterator end)
Definition: DynArray.h:206
value_type & operator[](std::size_t index)
Definition: DynArray.h:138
TAllocator allocator_type
Definition: DynArray.h:32
static pointer_type create(std::size_t size, allocator_type alloc)
Definition: DynArray.h:218
DynArray(TIterator start, TIterator end, const allocator_type &allocator=allocator_type{})
Definition: DynArray.h:68
bool empty() const
Definition: DynArray.h:134
T value_type
Definition: DynArray.h:31
DynArray(std::size_t size, const value_type &value, const allocator_type &allocator=allocator_type{})
Definition: DynArray.h:53
pointer_type ptr
Definition: DynArray.h:227
void resize(std::size_t size)
Definition: DynArray.h:187
void resize(std::size_t size, const value_type &value)
Definition: DynArray.h:172
const value_type & operator[](std::size_t index) const
Definition: DynArray.h:143
const value_type * cend() const
Definition: DynArray.h:160
DynArray & operator=(DynArray &&rhs) noexcept
Definition: DynArray.h:106
value_type * begin()
Definition: DynArray.h:148
const value_type * begin() const
Definition: DynArray.h:164
const value_type * cbegin() const
Definition: DynArray.h:156
void copy(const TSource &source, TDestination &destination)
Definition: utils/Extd.h:123