Hello all,
I need some assistance. I've been out of the C++ game way too long and
I need some help getting back up to speed. I'm taking a class where STL
is mostly covered...I know alot of people break off the message here,
but I want help and guidance to understand, not someone to do my work.
Asking for help is a respectable thing, it's when you admit to yourself
that you can't do it alone.
I think I might be a little over my head, but I've been doing a lot of
studying to bring myself back up to speed. I understand all the
concepts, it's just implementing them...that's where my problem lies.
Here is what I am working on. I have an interface file (database.h) and
an implementation file (database.cpp). From what I understand, the
header file is complete.
I don't even know where to start here. You guidance is appreciated, I'm
just trying to learn.
/************** database.h **************/
#ifndef DATABASE_H
#define DATABASE_H
#include <queue>
#include <vector>
#include <fstream>
#include <iostream>
// Database of items
// sizeType is defined as typedef std::size_t sizeType; in other file
namespace myNamespace {
template <class Item>
class database {
public:
database ( );
~database ( ) {file.close ( );}
sizeType print ( );
sizeType removeAll ( );
sizeType add (Item &);
Item search (sizeType);
Item remove (sizeType);
protected:
std::fstream file;
// if used == 0; file is empty.
// if used > 0, file has items at positions
// from 0 to used - 1, some of which
// may have been removed.
sizeType used;
// positions of removed items
std::priority_queue<sizeType, std::vector<sizeType>,
std::greater<sizeType> > removedPos;
database (const database &); // can not copy database
void operator = (const database &); // can not assign database
};
}
#include "database.cpp"
#endif
/************** database.cpp **************/
// implementation file for database.h
namespace myNamespace
{
template <class Item>
database<Item>::database () : used (0)
{
file.open ("_temp", std::ios::in
| std::ios::out
| std::ios::binary);
if (!file)
std::cout << " Can not open database file\n";
}
template <class Item>
sizeType database<Item>::add (Item &item)
{
//Add item to file and return position at which item
//is added. If removedPos is empty, add item as last item;
//else add item at position at head of removedPos.
}
template <class Item>
Item database<Item>::search (sizeType pos)
{
//Return item at position. Assume item at the
//position has not been removed.
}
template <class Item>
Item database<Item>::remove (sizeType pos)
{
//Add position to removedPos and return item at position.
//Assume item at the position has not been removed. This
//creates a hole in the file.
}
template <class Item>
sizeType database<Item>::print ( )
{
//Print items that have not been removed and return
//the number of printed items.
}
template <class Item>
sizeType database<Item>::removeAll ( )
{
//Remove all items and return number of removed items
}
}