test

Dependencies:   SDFileSystem mbed-dev

Fork of Nucleo_Ex06_EMU by woodstock .

Committer:
charliex
Date:
Sat May 27 02:17:37 2017 +0000
Revision:
4:53ef91c87d74
Parent:
0:3dac1f1bc9e0
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
beaglescout007 0:3dac1f1bc9e0 1 #pragma once
beaglescout007 0:3dac1f1bc9e0 2
beaglescout007 0:3dac1f1bc9e0 3 template<class K,class T>
beaglescout007 0:3dac1f1bc9e0 4 class mymap {
beaglescout007 0:3dac1f1bc9e0 5 struct mypair {
beaglescout007 0:3dac1f1bc9e0 6 K first;
beaglescout007 0:3dac1f1bc9e0 7 T second;
beaglescout007 0:3dac1f1bc9e0 8 };
beaglescout007 0:3dac1f1bc9e0 9 public:
beaglescout007 0:3dac1f1bc9e0 10 mymap() {
beaglescout007 0:3dac1f1bc9e0 11 m_size = 0;
beaglescout007 0:3dac1f1bc9e0 12 }
beaglescout007 0:3dac1f1bc9e0 13 T& operator[](const K& key) {
beaglescout007 0:3dac1f1bc9e0 14 int it;
beaglescout007 0:3dac1f1bc9e0 15 if (count(key) == 0) {
beaglescout007 0:3dac1f1bc9e0 16 it = insert(key, 0);
beaglescout007 0:3dac1f1bc9e0 17 } else {
beaglescout007 0:3dac1f1bc9e0 18 it = find(key);
beaglescout007 0:3dac1f1bc9e0 19 }
beaglescout007 0:3dac1f1bc9e0 20 return m_buf[it].second;
beaglescout007 0:3dac1f1bc9e0 21 }
beaglescout007 0:3dac1f1bc9e0 22 bool empty() { return m_size == 0 ? true : false; }
beaglescout007 0:3dac1f1bc9e0 23 int size() { return m_size; }
beaglescout007 0:3dac1f1bc9e0 24 void clear() { m_size = 0; }
beaglescout007 0:3dac1f1bc9e0 25 int count(K key) {
beaglescout007 0:3dac1f1bc9e0 26 for(int i = 0; i < m_size; i++) {
beaglescout007 0:3dac1f1bc9e0 27 if (m_buf[i].first == key) {
beaglescout007 0:3dac1f1bc9e0 28 return 1;
beaglescout007 0:3dac1f1bc9e0 29 }
beaglescout007 0:3dac1f1bc9e0 30 }
beaglescout007 0:3dac1f1bc9e0 31 return 0;
beaglescout007 0:3dac1f1bc9e0 32 }
beaglescout007 0:3dac1f1bc9e0 33
beaglescout007 0:3dac1f1bc9e0 34 private:
beaglescout007 0:3dac1f1bc9e0 35 int find(K key) {
beaglescout007 0:3dac1f1bc9e0 36 for(int i = 0; i < m_size; i++) {
beaglescout007 0:3dac1f1bc9e0 37 if (m_buf[i].first == key) {
beaglescout007 0:3dac1f1bc9e0 38 return i;
beaglescout007 0:3dac1f1bc9e0 39 }
beaglescout007 0:3dac1f1bc9e0 40 }
beaglescout007 0:3dac1f1bc9e0 41 return -1;
beaglescout007 0:3dac1f1bc9e0 42 }
beaglescout007 0:3dac1f1bc9e0 43 int insert(K key, T value) {
beaglescout007 0:3dac1f1bc9e0 44 int it = find(key);
beaglescout007 0:3dac1f1bc9e0 45 if (it != -1) {
beaglescout007 0:3dac1f1bc9e0 46 m_buf[it].second = value;
beaglescout007 0:3dac1f1bc9e0 47 return it;
beaglescout007 0:3dac1f1bc9e0 48 }
beaglescout007 0:3dac1f1bc9e0 49 mypair* new_buf = new mypair[m_size+1];
beaglescout007 0:3dac1f1bc9e0 50 if (m_size > 0) {
beaglescout007 0:3dac1f1bc9e0 51 for(int i = 0; i < m_size; i++) {
beaglescout007 0:3dac1f1bc9e0 52 new_buf[i] = m_buf[i];
beaglescout007 0:3dac1f1bc9e0 53 }
beaglescout007 0:3dac1f1bc9e0 54 delete[] m_buf;
beaglescout007 0:3dac1f1bc9e0 55 }
beaglescout007 0:3dac1f1bc9e0 56 m_buf = new_buf;
beaglescout007 0:3dac1f1bc9e0 57 it = m_size++;
beaglescout007 0:3dac1f1bc9e0 58 m_buf[it].first = key;
beaglescout007 0:3dac1f1bc9e0 59 m_buf[it].second = value;
beaglescout007 0:3dac1f1bc9e0 60 return it;
beaglescout007 0:3dac1f1bc9e0 61 }
beaglescout007 0:3dac1f1bc9e0 62
beaglescout007 0:3dac1f1bc9e0 63 int m_size;
beaglescout007 0:3dac1f1bc9e0 64 mypair *m_buf;
beaglescout007 0:3dac1f1bc9e0 65 };
beaglescout007 0:3dac1f1bc9e0 66