summaryrefslogtreecommitdiff
path: root/src/mem/gems_common/Map.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/gems_common/Map.hh')
-rw-r--r--src/mem/gems_common/Map.hh33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/mem/gems_common/Map.hh b/src/mem/gems_common/Map.hh
index 7b3c26279..0a1f0f4e1 100644
--- a/src/mem/gems_common/Map.hh
+++ b/src/mem/gems_common/Map.hh
@@ -34,10 +34,11 @@
#ifndef MAP_H
#define MAP_H
+#include <cassert>
#include <iostream>
+#include <vector>
#include "base/hashmap.hh"
-#include "mem/gems_common/Vector.hh"
template <class KEY_TYPE, class VALUE_TYPE>
class Map
@@ -55,8 +56,8 @@ public:
bool exist(const KEY_TYPE& key) const;
int size() const { return m_map.size(); }
void erase(const KEY_TYPE& key) { assert(exist(key)); m_map.erase(key); }
- Vector<KEY_TYPE> keys() const;
- Vector<VALUE_TYPE> values() const;
+ std::vector<KEY_TYPE> keys() const;
+ std::vector<VALUE_TYPE> values() const;
void deleteKeys();
void deleteValues();
VALUE_TYPE& lookup(const KEY_TYPE& key) const;
@@ -108,27 +109,29 @@ VALUE_TYPE& Map<KEY_TYPE, VALUE_TYPE>::lookup(const KEY_TYPE& key) const
}
template <class KEY_TYPE, class VALUE_TYPE>
-Vector<KEY_TYPE> Map<KEY_TYPE, VALUE_TYPE>::keys() const
+std::vector<KEY_TYPE> Map<KEY_TYPE, VALUE_TYPE>::keys() const
{
- Vector<KEY_TYPE> keys;
- const_iterator iter;
- for (iter = m_map.begin(); iter != m_map.end(); iter++) {
- keys.insertAtBottom((*iter).first);
+ std::vector<KEY_TYPE> keys(m_map.size());
+ const_iterator iter = m_map.begin();
+ for (int i = 0; i < m_map.size(); ++i) {
+ keys[i] = iter->first;
+ ++iter;
}
+ assert(iter == m_map.end());
return keys;
}
template <class KEY_TYPE, class VALUE_TYPE>
-Vector<VALUE_TYPE> Map<KEY_TYPE, VALUE_TYPE>::values() const
+std::vector<VALUE_TYPE> Map<KEY_TYPE, VALUE_TYPE>::values() const
{
- Vector<VALUE_TYPE> values;
- const_iterator iter;
- std::pair<KEY_TYPE, VALUE_TYPE> p;
+ std::vector<VALUE_TYPE> values(m_map.size());
+ const_iterator iter = m_map.begin();
- for (iter = m_map.begin(); iter != m_map.end(); iter++) {
- p = *iter;
- values.insertAtBottom(p.second);
+ for (int i = 0; i < m_map.size(); ++i) {
+ values[i] = iter->second;
+ ++iter;
}
+ assert(iter == m_map.end());
return values;
}