diff --git a/TinySTL/Detail/AVLTree.impl.h b/TinySTL/Detail/AVLTree.impl.h index 01229a5a056c3fe328a24618c0a7317072345c6c..eb9d5086a6bc87071cf3218b7a5b4f5f945e0da0 100644 --- a/TinySTL/Detail/AVLTree.impl.h +++ b/TinySTL/Detail/AVLTree.impl.h @@ -154,8 +154,8 @@ namespace TinySTL{ void avl_tree::insert_elem(const T& val, node *&p){ if (p == 0){ p = dataAllocator::allocate(); - //p->data_ = val; - construct(&(p->data_), val); + dataAllocator::construct(p); + p->data_ = val; p->left_ = p->right_ = 0; p->height_ = 1; ++size_; diff --git a/TinySTL/Detail/BinarySearchTree.impl.h b/TinySTL/Detail/BinarySearchTree.impl.h index a08b00c57714cf779bafa56f9e15cbe3a8cab1c6..4d48f40fdbeee40cdc5b9884c8fca54e1e66acdc 100644 --- a/TinySTL/Detail/BinarySearchTree.impl.h +++ b/TinySTL/Detail/BinarySearchTree.impl.h @@ -137,9 +137,8 @@ namespace TinySTL{ void binary_search_tree::insert_elem(const T& val, node *&ptr){//重复的元素不插入 if (ptr == 0){ ptr = nodeAllocator::allocate(); - TinySTL::construct(&(ptr->data_), val); - //memset(ptr, 0, sizeof(node)); - //ptr->data_ = val; + nodeAllocator::construct(ptr); + ptr->data_ = val; ptr->left_ = ptr->right_ = 0; ++size_; } diff --git a/TinySTL/Detail/List.impl.h b/TinySTL/Detail/List.impl.h index 2712884ac72a6ef54d7c5f462e5560d5250c066e..aeb4e848be88daadfd0255de6c7a4fcfcd427558 100644 --- a/TinySTL/Detail/List.impl.h +++ b/TinySTL/Detail/List.impl.h @@ -44,10 +44,6 @@ namespace TinySTL{ template template void list::insert_aux(iterator position, InputIterator first, InputIterator last, std::false_type){ - //for (; first != last; ++first){ - // insert(position, *first); - // position = insert(position, *first); - //} for (--last; first != last; --last){ position = insert(position, *last); } @@ -56,18 +52,13 @@ namespace TinySTL{ template typename list::nodePtr list::newNode(const T& val = T()){ nodePtr res = nodeAllocator::allocate(); - res->container = this; - //res->data = val; //-> bug - //nodeAllocator::construct(&(res->data), val); - TinySTL::construct(&(res->data), val);//fix - res->prev = nullptr; - res->next = nullptr; + nodeAllocator::construct(res, Detail::node(val, nullptr, nullptr, this)); return res; } template void list::deleteNode(nodePtr p){ - p->prev = nullptr; - p->next = nullptr; + p->prev = p->next = nullptr; + nodeAllocator::destroy(p); nodeAllocator::deallocate(p); } template