实现不排序的Map

以下代码实现用vector实现一个map,规避map自动排序功能功能: 通过key值查找  通过[]赋值取值  通过key值删除  成对插入值


#ifndef MAP_H_ #define MAP_H_ #include #include using namespace std; template class SelfMap { public: T* find(const K& k) { for(unsigned int i = 0; i < m_data.size(); i++) { if(m_data[i].first == k) { return &(m_data[i].second); } } return NULL; } void insert(const K& f, const T& s) { T* p = find(f); if(p == NULL) { m_data.push_back(pair(f,s)); } else { *p = s; } } void removed(const K& k) { unsigned int index = 0; for(unsigned int i = 0; i < m_data.size(); i++) { if(m_data[i].first == k) { index = i; break; } } m_data.erase(m_data.begin() + index); } T& operator [](const K& key) { if (this->find(key) != NULL) { return *this->find(key); } else { this->insert(key, T()); } return *this->find(key); } private: vector> m_data; }; #endif

你可能感兴趣的:(C/C++)