Problema tab Hash

di il
6 risposte

Problema tab Hash

Premettendo che sto affrontando da pochi giorni le tabelle Hash..stavo cercando di creare una piccola classe TabellaHash per poi fare qualke esercizio su di esse.
Vorrei che controllasse il codice xkè mi porta un errore che nn riesco a spiegare..naturalmente le cose incomplete sono dovute a questo problema ke ha fatto bloccare la mia implementazione...

#ifndef TABELLAHASH_H
#define TABELLAHASH_H
#include <iostream>
#include <vector>
#include <list>
using namespace std;

template <class T>
class TabellaHash
{
private:
typedef list<T> lista;
vector<lista> tab;
public:
TabellaHash();
bool canc(const T& obj)
{
int chiave; // messa cosi per prova
if(tab[chiave].empty())
{
return false;
}
for(lista::iterator it = tab[chiave].begin();it!=tab[chiave].end();it++) // qui sarebbe l errore -_-'
{
if(obj==) // volevo sapere come faccio a controllare obj di tipo T con il contenuto dell oggetto della lista???
{

}
}
return true;
};
//Sotto ancora devo implementarle
void svuota();
bool aggiungi(T& obj);
bool cerca(T& obj);

};

#endif // TABELLAHASH_H


Messaggio errore:

C:\Users\hp\Desktop\TabellaHash\TabellaHash.h: In member function 'bool TabellaHash<T>::canc(const T&)':
C:\Users\hp\Desktop\TabellaHash\TabellaHash.h:23: error: expected ';' before 'it'
C:\Users\hp\Desktop\TabellaHash\TabellaHash.h:23: error: 'it' was not declared in this scope
C:\Users\hp\Desktop\TabellaHash\TabellaHash.h:25: error: expected primary-expression before ')' token
Process terminated with status 1 (0 minutes, 0 seconds)
3 errors, 0 warnings

6 Risposte

  • Re: Problema tab Hash

    VS2008 nessun problema con l'iterator. warning su chiave utilizzato senza essere inizializzato.
    
    for(lista::iterator it = tab[chiave].begin();it!=tab[chiave].end();it++) 
    		{
    			if(obj== *it) 
    			{
    
    			}
    		}
    
  • Re: Problema tab Hash

    No no..non centra l'inizializzazione della chiave.
    Uff..non riesco a capire dove sia il problema.
  • Re: Problema tab Hash

    Dichiara la variabile fuori da for e riprova. Se la chiave non la inizializzi cmq avrai problemi dopo, poi fai tu.
  • Re: Problema tab Hash

    La tua classe messa a posto
    
    #ifndef TABELLAHASH_H
    #define TABELLAHASH_H
    
    #include <vector>
    #include <list>
    
    template <class T>
    class TabellaHash
    {
    private:
    	typedef std::list<T> lista;
    	std::vector<lista> tab;
    public:
    	TabellaHash(){};
    	bool canc(const T& obj)
    	{
    		int chiave = 0; 
    		if(tab[chiave].empty())
    		{
    			return false;
    		}
    		lista::iterator it;
    		for(it = tab[chiave].begin();it!=tab[chiave].end();it++) 
    		{
    			if(obj==*it) 
    			{
    
    			}
    		}
    		return true;
    	};
    	//Sotto ancora devo implementarle
    	void svuota();
    	bool aggiungi(T& obj);
    	bool cerca(T& obj);
    
    };
    
    #endif // TABELLAHASH_H
    
  • Re: Problema tab Hash

    La mia classe è identica a questa in pratica non hai messo using namespace std ed hai fatto std:: e poi hai dichiarato fuori l iteratore it! ho cmq fatto questa prova ma rimane cn gli stessi errori!
  • Re: Problema tab Hash

    Qual'è il tuo compilatore? la tua classe non è identica. non avevi sviluppato il costruttore. non si mette using namespace nei header.
    Se vuoi dei aiuti dai dei dettagli.
    Questa classe con Visual Studio 2008 e 2010 viene compilata. Ha ancora problemi di algortimo cmq.
Devi accedere o registrarti per scrivere nel forum
6 risposte