[vector] Add initializer from iterable
This commit is contained in:
parent
18a078f968
commit
ee75e716c1
|
@ -47,6 +47,12 @@ struct hb_vector_t
|
|||
for (auto&& i : l)
|
||||
push (i);
|
||||
}
|
||||
template <typename Iterable,
|
||||
hb_requires (hb_is_iterable (Iterable))>
|
||||
hb_vector_t (const Iterable &o) : hb_vector_t ()
|
||||
{
|
||||
hb_copy (o, *this);
|
||||
}
|
||||
hb_vector_t (const hb_vector_t &o) : hb_vector_t ()
|
||||
{
|
||||
alloc (o.length);
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include "hb.hh"
|
||||
#include "hb-algs.hh"
|
||||
#include "hb-set.hh"
|
||||
|
||||
|
||||
static char *
|
||||
|
@ -91,6 +92,35 @@ main (int argc, char **argv)
|
|||
assert (++hb_inc (x) == 3);
|
||||
assert (x == 3);
|
||||
|
||||
/* Test initializing vector from iterable. */
|
||||
{
|
||||
hb_set_t s;
|
||||
|
||||
s.add (18);
|
||||
s.add (12);
|
||||
|
||||
hb_vector_t<int> v (s);
|
||||
|
||||
assert (v.length == 2);
|
||||
assert (v[0] == 12);
|
||||
assert (v[1] == 18);
|
||||
}
|
||||
|
||||
/* Test initializing vector from iterator. */
|
||||
{
|
||||
hb_set_t s;
|
||||
|
||||
s.add (18);
|
||||
s.add (12);
|
||||
|
||||
hb_vector_t<int> v (hb_iter (s));
|
||||
|
||||
assert (v.length == 2);
|
||||
assert (v[0] == 12);
|
||||
assert (v[1] == 18);
|
||||
}
|
||||
|
||||
/* Test initializing vector from initializer list and swapping. */
|
||||
{
|
||||
hb_vector_t<int> v1 {1, 2, 3};
|
||||
hb_vector_t<int> v2 {4, 5};
|
||||
|
@ -101,6 +131,7 @@ main (int argc, char **argv)
|
|||
assert (v2[2] == 3);
|
||||
}
|
||||
|
||||
/* Test initializing sorted-vector from initializer list and swapping. */
|
||||
{
|
||||
hb_sorted_vector_t<int> v1 {1, 2, 3};
|
||||
hb_sorted_vector_t<int> v2 {4, 5};
|
||||
|
|
Loading…
Reference in New Issue