Browse Source

avl_tree: adding copy constructor and operator=

undefined
Guillaume Bittoun Sam Hocevar <sam@hocevar.net> 10 years ago
parent
commit
ca54c69d17
2 changed files with 39 additions and 0 deletions
  1. +20
    -0
      src/lol/algorithm/avl_tree.h
  2. +19
    -0
      src/t/algorithm/avl_tree.cpp

+ 20
- 0
src/lol/algorithm/avl_tree.h View File

@@ -24,6 +24,26 @@ public:
{
}

avl_tree(avl_tree const & other) :
m_root(nullptr)
{
for (auto iterator : other)
this->insert(iterator.key, iterator.value);
}

avl_tree & operator=(avl_tree const & other)
{
if (this->m_root)
{
this->m_root->cascade_delete();
delete this->m_root;
this->m_root = nullptr;
}

for (auto iterator : other)
this->insert(iterator.key, iterator.value);
}

~avl_tree()
{
if (this->m_root)


+ 19
- 0
src/t/algorithm/avl_tree.cpp View File

@@ -190,6 +190,25 @@ lolunit_declare_fixture(AvlTreeTest)
tmp = iterator.key;
}
}

lolunit_declare_test(AvlTreeTestIteratorCopy)
{
test_tree tree;

for (int i = 1 ; i < 100 ; ++i)
tree.insert(i, 2 * i + i % 3);

test_tree other = tree;

int tmp = 0;

for (auto iterator : other)
{
lolunit_assert_equal(iterator.key > tmp, true);
lolunit_assert_equal(iterator.value == (iterator.key * 2 + iterator.key % 3), true);
tmp = iterator.key;
}
}
};

}

Loading…
Cancel
Save