|
|
@@ -7,24 +7,24 @@ namespace pkpy{
|
|
|
|
|
|
template<typename T>
|
|
|
struct pod_vector{
|
|
|
- static_assert(128 % sizeof(T) == 0);
|
|
|
+ static_assert(64 % sizeof(T) == 0);
|
|
|
static_assert(std::is_pod_v<T>);
|
|
|
- static constexpr int N = 128 / sizeof(T);
|
|
|
- static_assert(N > 4);
|
|
|
+ static constexpr int N = 64 / sizeof(T);
|
|
|
+ static_assert(N >= 4);
|
|
|
int _size;
|
|
|
int _capacity;
|
|
|
T* _data;
|
|
|
|
|
|
pod_vector(): _size(0), _capacity(N) {
|
|
|
- _data = (T*)pool128.alloc(_capacity * sizeof(T));
|
|
|
+ _data = (T*)pool64.alloc(_capacity * sizeof(T));
|
|
|
}
|
|
|
|
|
|
pod_vector(int size): _size(size), _capacity(std::max(N, size)) {
|
|
|
- _data = (T*)pool128.alloc(_capacity * sizeof(T));
|
|
|
+ _data = (T*)pool64.alloc(_capacity * sizeof(T));
|
|
|
}
|
|
|
|
|
|
pod_vector(const pod_vector& other): _size(other._size), _capacity(other._capacity) {
|
|
|
- _data = (T*)pool128.alloc(_capacity * sizeof(T));
|
|
|
+ _data = (T*)pool64.alloc(_capacity * sizeof(T));
|
|
|
memcpy(_data, other._data, sizeof(T) * _size);
|
|
|
}
|
|
|
|
|
|
@@ -36,7 +36,7 @@ struct pod_vector{
|
|
|
}
|
|
|
|
|
|
pod_vector& operator=(pod_vector&& other) noexcept {
|
|
|
- if(_data!=nullptr) pool128.dealloc(_data);
|
|
|
+ if(_data!=nullptr) pool64.dealloc(_data);
|
|
|
_size = other._size;
|
|
|
_capacity = other._capacity;
|
|
|
_data = other._data;
|
|
|
@@ -63,10 +63,10 @@ struct pod_vector{
|
|
|
if(cap <= _capacity) return;
|
|
|
_capacity = cap;
|
|
|
T* old_data = _data;
|
|
|
- _data = (T*)pool128.alloc(_capacity * sizeof(T));
|
|
|
+ _data = (T*)pool64.alloc(_capacity * sizeof(T));
|
|
|
if(old_data!=nullptr){
|
|
|
memcpy(_data, old_data, sizeof(T) * _size);
|
|
|
- pool128.dealloc(old_data);
|
|
|
+ pool64.dealloc(old_data);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -111,7 +111,7 @@ struct pod_vector{
|
|
|
}
|
|
|
|
|
|
~pod_vector() {
|
|
|
- if(_data!=nullptr) pool128.dealloc(_data);
|
|
|
+ if(_data!=nullptr) pool64.dealloc(_data);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@@ -137,6 +137,6 @@ public:
|
|
|
Container& data() { return vec; }
|
|
|
};
|
|
|
|
|
|
-template <typename T>
|
|
|
-using pod_stack = stack<T, pod_vector<T>>;
|
|
|
+// template <typename T>
|
|
|
+// using pod_stack = stack<T, pod_vector<T>>;
|
|
|
} // namespace pkpy
|