Commit a5d0bb1b authored by Valentin Valls's avatar Valentin Valls

Update unordered_set to match C++11

- bucket API
- load_factor API
- erase and insert with begin/end iterators
parent 37436f04
......@@ -37,16 +37,16 @@ cdef extern from "<unordered_set>" namespace "std" nogil:
iterator end()
const_iterator const_end "end"()
pair[iterator, iterator] equal_range(T&)
#pair[const_iterator, const_iterator] equal_range(T&)
void erase(iterator)
void erase(iterator, iterator)
pair[const_iterator, const_iterator] const_equal_range "equal_range"(T&)
iterator erase(iterator)
iterator erase(iterator, iterator)
size_t erase(T&)
iterator find(T&)
const_iterator const_find "find"(T&)
pair[iterator, bint] insert(T&)
iterator insert(iterator, T&)
#void insert(input_iterator, input_iterator)
#key_compare key_comp()
iterator insert(iterator, iterator)
iterator lower_bound(T&)
const_iterator const_lower_bound "lower_bound"(T&)
size_t max_size()
......@@ -59,3 +59,11 @@ cdef extern from "<unordered_set>" namespace "std" nogil:
iterator upper_bound(T&)
const_iterator const_upper_bound "upper_bound"(T&)
#value_compare value_comp()
void max_load_factor(float)
float max_load_factor()
void rehash(size_t)
void reserve(size_t)
size_t bucket_count()
size_t max_bucket_count()
size_t bucket_size(size_t)
size_t bucket(const T&)
......@@ -4,6 +4,7 @@
import sys
from libcpp.unordered_map cimport unordered_map
from libcpp.unordered_set cimport unordered_set
from libcpp.vector cimport vector
from libcpp.queue cimport queue
from libcpp.queue cimport priority_queue
......@@ -85,6 +86,43 @@ def test_map_functionality():
return "pass"
def test_unordered_set_functionality():
"""
>>> test_unordered_set_functionality()
'pass'
"""
cdef:
unordered_set[int] int_set = unordered_set[int]()
unordered_set[int] int_set2
unordered_set[int].iterator iterator = int_set.begin()
int_set.insert(1)
assert int_set.size() == 1
int_set.erase(int_set.begin(), int_set.end())
assert int_set.size() == 0
int_set.insert(1)
assert int_set.erase(1) == 1 # returns number of elements erased
assert int_set.size() == 0
int_set.insert(1)
iterator = int_set.find(1)
assert int_set.erase(iterator) == int_set.end()
int_set2.insert(3)
int_set2.insert(5)
int_set.insert(int_set2.begin(), int_set2.end())
assert int_set.size() == 2
int_set.max_load_factor(0.5)
assert int_set.max_load_factor() == 0.5
int_set.rehash(20)
int_set.reserve(20)
int_set.bucket_size(0)
int_set.bucket_count()
int_set.max_bucket_count()
int_set.bucket(3)
return "pass"
def test_unordered_map_functionality():
"""
>>> test_unordered_map_functionality()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment