Refining packed_vector.hpp

* Rename to std::vector-like APIs (push_back, at)
* Add size, reserve, capacity methods
This commit is contained in:
Lauren Budorick
2016-05-23 10:39:57 -04:00
committed by Daniel J. Hofmann
parent 46b58fba83
commit 1659bbf7b1
2 changed files with 32 additions and 4 deletions
+17 -2
View File
@@ -25,7 +25,7 @@ class PackedVector
public:
PackedVector() = default;
void insert(OSMNodeID incoming_node_id)
void push_back(OSMNodeID incoming_node_id)
{
std::uint64_t node_id = static_cast<std::uint64_t>(incoming_node_id);
// mask incoming values, just in case they are > bitsize
@@ -61,7 +61,7 @@ class PackedVector
num_elements++;
}
OSMNodeID retrieve(const std::size_t &a_index) const
OSMNodeID at(const std::size_t &a_index) const
{
BOOST_ASSERT(a_index < num_elements);
@@ -102,6 +102,21 @@ class PackedVector
}
}
std::size_t size() const
{
return num_elements;
}
void reserve(std::size_t capacity)
{
vec.reserve(ceil(float(capacity) / ELEMSIZE) * BITSIZE);
}
std::size_t capacity() const
{
return floor(float(vec.capacity()) / BITSIZE) * ELEMSIZE;
}
private:
std::vector<std::uint64_t> vec;
std::size_t num_elements = 0;