Pagina 1 di 1

c++ : domanda su std::map

Inviato: martedì 9 settembre 2008, 14:10
da bite
C'è qualche controindicazione ad usare un tipo puntatore come chiave di una mappa?

Re: c++ : domanda su std::map

Inviato: martedì 9 settembre 2008, 14:39
da Dahman
Non che sappia io, anzi, nella maggior parte dei casi é più conveniente, soprattutto se l'oggetto chiave é "grosso": minor risorse e ricerca più veloce.
Bisogna solo aver ben chiaro il concetto dell'ownership del puntatore.
Questo in generale altrimenti bisogna vedere cosa intendi fare per dire qualcosa in più.

Ciao

Dahman

Re: c++ : domanda su std::map

Inviato: martedì 9 settembre 2008, 15:58
da bite
Ho un grosso numero (da migliaia a milioni) di oggetti e devo sapere in tempi brevi se un certo oggetto rispetta certi requisiti.

Questo lo so nel momento in cui l'oggetto viene allocato, ma non mi piace la soluzione (efficiente ma intrusiva) di aggiungere un campo alla classe per prenderne nota, perché la stessa classe la uso anche in altri ambiti, dove quel campo non servirebbe a nulla.

Sia Pippo la classe dell'oggetto. Pensavo di fare una map e gestire il contenuto unsigned int a maschera di bit per prendervi nota di ciò che mi interessa.

Re: c++ : domanda su std::map

Inviato: martedì 9 settembre 2008, 16:41
da Dahman
Ho un grosso numero (da migliaia a milioni) di oggetti e devo sapere in tempi brevi se un certo oggetto rispetta certi requisiti.
In linea di massima la std::map va bene, é abbastanza veloce (tempi di ricerca O(log n)), ma dipende quanto sarà frequente questa ricerca e cosa intendi per tempi brevi (per millioni di oggetti molto difficile avere la risposta in tempo reale)
Questo lo so nel momento in cui l'oggetto viene allocato, ma non mi piace la soluzione (efficiente ma intrusiva) di aggiungere un campo alla classe per prenderne nota, perché la stessa classe la uso anche in altri ambiti, dove quel campo non servirebbe a nulla.
Perché non derivi la tua classe dalla classe Pippo e ci aggiungi il campo che vuoi?

Ciao

Dahman

Re: c++ : domanda su std::map

Inviato: martedì 9 settembre 2008, 16:53
da bite
Dahman ha scritto:
Ho un grosso numero (da migliaia a milioni) di oggetti e devo sapere in tempi brevi se un certo oggetto rispetta certi requisiti.
In linea di massima la std::map va bene, é abbastanza veloce (tempi di ricerca O(log n)), ma dipende quanto sarà frequente questa ricerca e cosa intendi per tempi brevi (per millioni di oggetti molto difficile avere la risposta in tempo reale)
Questo lo so nel momento in cui l'oggetto viene allocato, ma non mi piace la soluzione (efficiente ma intrusiva) di aggiungere un campo alla classe per prenderne nota, perché la stessa classe la uso anche in altri ambiti, dove quel campo non servirebbe a nulla.
Perché non derivi la tua classe dalla classe Pippo e ci aggiungi il campo che vuoi?
Sì, in effetti questa è un'altra possibilità, efficiente e non intrusiva, anche se esteticamente insoddisfacente per i miei gusti.

Grazie, ciao

Re: c++ : domanda su std::map

Inviato: martedì 9 settembre 2008, 17:20
da bite
Fatta prova, la differenza di tempo di esecuzione è impressionante. Scelgo la soluzione non esteticamente soddisfacente;D