Hello,
I have to code essentially what would mimic a std::map. I have a templated pair class, and a table class.
I am given two tables, transition and action table, which are attached.
Basically, I suppose to code a security system, where a door opens after someone punches in the combination BAAD. Anything else will sound the alarm.
I understand the concept, but I do not understand how to create a mapping of the table.
Below in the header file, int (*Mapping)( Key k);
I cannot figure out how I would map key to value using the action and transition table.
Please ask if I need to supply anymore information,
Jake
Table Header File:
#ifndef TABLE_H
#define TABLE_H
#include <iostream>
#include <stdexcept>
#include <string>
#include "pair.h" // Pair class
using namespace std;
// implements a table containing key/value pairs.
// a table does not contain multiple copies of the same item.
// types T and Key must have a default constructor
template < class Key, typename T >
class Table
{
public:
Table(); //default constructor
~Table(); //destructor
typedef Key key_type;
// for convenience
private:
// table implemented using a one dimensional array of key-value pairs
int tableSize;
Pair< key_type, T > *the_table;
int (*Mapping)( Key k);
// Mapping is a function which maps keys to
// an array index; ie a key to address mapping
// the idea is that Mapping will act on a given key
// in such a way as to return the relative postion
// in the sequence at which we expect to find the key
// Mapping will be used in the remove, add, lookup. =
// member functions and copy constructor
public:
// for debugging
void print();
Table( int n, int (*map)( Key k) );
// map is a function to map key to address
// in the implementation
// set the function ie have the code line
// Mapping = map;
// populates table with default values
// for the class Key and T
bool insert( Pair< Key, T > kvpair );
// return true if item could be added to the
// table false if item was not added.
bool remove( const Key aKey );
// erase the key/value pair with the specified key
// from the table and return if successful
// removed item is replaced with default
// values for Key and T
T lookUp (const Key aKey) ;
// what if key not in table??
//need copy constructor
//need destructor
// void operator= ( const Table & initTable );
// bool empty() const;
// is the table empty?
// bool full() const;
// is the table full?
// int size() const;
// return the number of elements in the table
// bool isIn(const Key& key) const;
// returns true/false in response to obvious question
};
#include "table.t"
#endif