17 #ifndef JUBATUS_CORE_COMMON_ASSOC_VECTOR_HPP_
18 #define JUBATUS_CORE_COMMON_ASSOC_VECTOR_HPP_
23 #include <msgpack.hpp>
29 template <
typename K,
typename V>
44 const_iterator
end()
const {
60 const_iterator
find(
const K& key)
const {
61 const_iterator it = std::lower_bound(
begin(),
65 if (it !=
end() && it->first == key) {
72 iterator
find(
const K& key) {
77 size_t count(
const K& key)
const {
86 iterator it =
find(key);
87 if (it !=
data_.end()) {
95 return data_.erase(it);
100 if (it !=
data_.end() && it->first == key) {
103 it =
data_.insert(it, std::make_pair(key, V()));
108 template <
typename Packer>
110 pk.pack_map(
data_.size());
111 for (std::size_t i = 0; i <
data_.size(); ++i) {
112 pk.pack(
data_[i].first);
113 pk.pack(
data_[i].second);
118 if (o.type != msgpack::type::MAP) {
119 throw msgpack::type_error();
121 std::vector<std::pair<K, V> > data(o.via.map.size);
122 for (std::size_t i = 0; i < data.size(); ++i) {
123 o.via.map.ptr[i].key.convert(&data[i].first);
124 o.via.map.ptr[i].val.convert(&data[i].second);
131 template <
class Pair,
class Key>
137 std::vector<std::pair<K, V> >
data_;
144 #endif // JUBATUS_CORE_COMMON_ASSOC_VECTOR_HPP_
const_iterator find(const K &key) const
void msgpack_pack(Packer &pk) const
iterator erase(iterator it)
V & operator[](const K &key)
std::vector< std::pair< K, V > > data_
void msgpack_unpack(msgpack::object o)
const_iterator begin() const
iterator erase(const K &key)
iterator find(const K &key)
data_type::const_iterator const_iterator
std::vector< std::pair< K, V > > data_type
size_t count(const K &key) const
const_iterator end() const
bool operator()(Pair const &p, Key const &k) const
data_type::iterator iterator