[ SuperC @ 31.03.2008. 18:06 ] @
Radim jedan projekat u C++. Moja tema je Linearni Hashing sa Mergesort. Znaci Hashing sa Mergesortom trebam implementirati unutar koda (vidi ispod), i to tako da da imam bazu u koju cu implementirati insert i search i onda da dodam i delete i sortiranje Code: #ifndef CONTAINER_H #define CONTAINER_H #include <iostream> #include <string> class Streamable { virtual std::ostream& put( std::ostream& o ) const = 0; friend std::ostream& operator<<( std::ostream& o, const Streamable& s ); public: virtual ~Streamable( ) {}; }; inline std::ostream& operator<<( std::ostream& o, const Streamable& s ) { return s.put( o ); } typedef unsigned long int ValueType; class Key { ValueType value; Key( ValueType v ) : value( v ) {} public: Key() {} ~Key( ) {} std::ostream& put( std::ostream& o ) const { return o << value; } std::istream& get( std::istream& i ) { return i >> value; } bool operator==( const Key& k ) const { return value == k.value; } bool operator>( const Key& k ) const { return value > k.value; } unsigned long ulongValue() const { return (unsigned long) value; } unsigned long hashValue() const { return (unsigned long) value; } friend class KeyFactory; }; inline std::ostream& operator<<( std::ostream& o, const Key& s ) { return s.put( o ); } inline std::istream& operator>>( std::istream& i, Key& s ) { return s.get( i ); } class KeyFactory { public: static Key newKey( unsigned long v ) { return Key( v ); } static Key newKey( ) { return Key( std::rand( ) ); } static void srand( int i ) { std::srand( i ); } }; class Container : public Streamable { protected: Container( ) { } public: enum Order { dontcare, ascending, descending }; class Functor; class Exception; virtual ~Container( ) { } virtual void add( const Key& key ) { add( &key, 1 ); } virtual void add( const Key keys[], size_t size ) = 0; virtual void remove( const Key& key ) { remove( &key, 1 ); } virtual void remove( const Key keys[], size_t size ) = 0; virtual bool isMember( const Key& key ) const = 0; virtual size_t size( ) const = 0; virtual bool isEmpty( ) const { return size( ) == 0; } virtual void foreach( const Functor& f, Order order = dontcare ) const = 0; virtual Key minKey( ) const = 0; virtual Key maxKey( ) const = 0; virtual int teamNr( ) const = 0; virtual int themeNr( ) const = 0; }; class Container::Exception : public Streamable { std::string msg; virtual std::ostream& put( std::ostream& o ) const { return o << "Container::Exception (" << msg << ")"; } public: Exception( const std::string& msg ) : msg( msg ) {} const std::string& getMsg() const { return msg; } virtual ~Exception( ) {} }; class Container::Functor { public: virtual bool operator( )( const Key& key ) const = 0; virtual ~Functor( ) {} }; #endif //CONTAINER_H |