lot of metal changes, but no idea how this stuff works
This commit is contained in:
@@ -299,6 +299,7 @@ template <typename T, typename Allocator = std::pmr::polymorphic_allocator<T>> s
|
||||
constexpr void remove(value_type&& element, bool keepOrder = true) { erase(find(element), keepOrder); }
|
||||
constexpr void erase(iterator it, bool keepOrder = true) { removeAt(it - begin(), keepOrder); }
|
||||
constexpr void erase(const_iterator it, bool keepOrder = true) { removeAt(it - cbegin(), keepOrder); }
|
||||
constexpr bool contains(const T& value) const { return find(value) != end(); }
|
||||
constexpr void removeAt(size_type index, bool keepOrder = true) {
|
||||
if (keepOrder) {
|
||||
for (size_type i = index; i < arraySize - 1; ++i) {
|
||||
@@ -385,7 +386,7 @@ template <typename T, typename Allocator = std::pmr::polymorphic_allocator<T>> s
|
||||
assert(result != nullptr);
|
||||
return result;
|
||||
}
|
||||
void deallocateArray(T* ptr, size_type size) { allocator.deallocate(ptr, size); }
|
||||
void deallocateArray(T* ptr, size_type size) { if(ptr == nullptr) return; allocator.deallocate(ptr, size); }
|
||||
template <typename Type> T& addInternal(Type&& t) noexcept {
|
||||
if (arraySize == allocated) {
|
||||
size_type newSize = arraySize + 1;
|
||||
|
||||
@@ -280,7 +280,7 @@ template <typename T, typename Allocator = std::pmr::polymorphic_allocator<T>> c
|
||||
std::allocator_traits<NodeAllocator>::construct(allocator, node, node->prev, node->next, std::forward<Type>(data));
|
||||
}
|
||||
constexpr void destroyNode(Node* node) { std::allocator_traits<NodeAllocator>::destroy(allocator, node); }
|
||||
constexpr void deallocateNode(Node* node) { allocator.deallocate(node, 1); }
|
||||
constexpr void deallocateNode(Node* node) { if(node == nullptr) return; allocator.deallocate(node, 1); }
|
||||
template <typename ValueType> constexpr iterator addInternal(ValueType&& value) {
|
||||
initializeNode(tail, std::forward<ValueType>(value));
|
||||
Node* newTail = allocateNode();
|
||||
@@ -308,4 +308,4 @@ template <typename T, typename Allocator = std::pmr::polymorphic_allocator<T>> c
|
||||
const_iterator cendIt;
|
||||
size_type _size;
|
||||
};
|
||||
} // namespace Seele
|
||||
} // namespace Seele
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
#include "Pair.h"
|
||||
#include "Array.h"
|
||||
#include <memory_resource>
|
||||
|
||||
|
||||
@@ -226,13 +227,13 @@ template <typename KeyType, typename NodeData, typename KeyFun, typename Compare
|
||||
}
|
||||
|
||||
private:
|
||||
void verifyTree() {
|
||||
/*void verifyTree() {
|
||||
size_t numElems = 0;
|
||||
for (const auto& it : *this) {
|
||||
numElems++;
|
||||
}
|
||||
assert(numElems == _size);
|
||||
}
|
||||
}*/
|
||||
void markIteratorsDirty() { iteratorsDirty = true; }
|
||||
void refreshIterators() {
|
||||
beginIt = calcBeginIterator();
|
||||
|
||||
Reference in New Issue
Block a user