Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] Confronto tra vector di stringhe...

    Ho due vector:

    codice:
    vector<string> vec;
    vector<string> vec2;
    contenente il primo 84.000 stringhe e il secondo 85.760 stringhe

    avrei necessita di confrontarli per rilevare solo le stringhe che non sono presenti in entrambi i vector...

    In php avrei fatto un array_diff(vec, vec2) ma in c++?

    Grazie 1000


  2. #2
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Re: [c++] Confronto tra vector di stringhe...

    Originariamente inviato da freetom
    Ho due vector:

    codice:
    vector<string> vec;
    vector<string> vec2;
    contenente il primo 84.000 stringhe e il secondo 85.760 stringhe

    avrei necessita di confrontarli per rilevare solo le stringhe che non sono presenti in entrambi i vector...

    In php avrei fatto un array_diff(vec, vec2) ma in c++?

    Grazie 1000

    Cerco di spiegarmi meglio con un esempio ridotto...

    in vector ho ad esempio A,B,C,D,E,F,G
    in vector2 ho A,B,C,F,G

    io vorrei effettuare la differenza tra i due vectors e ottenere nell'es: D e E

    Grazie


  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    39
    Io ti consiglio di fare un for che carica in un 3o vector tutte le stringhe del primo, e poi passa tutto il secondo e le cerca nel 3o vector (che magari non sarebbe male fosse ordinato cosi puoi fare ricerca binaria); se ne trova una la toglie, se non la trova la aggiunge.
    Non so dirti se esiste un metodo dei vector cerca nella guida dell'stl

  4. #4
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    con il for l'ho già fatto... ma...

    Originariamente inviato da p91paul
    Io ti consiglio di fare un for che carica in un 3o vector tutte le stringhe del primo, e poi passa tutto il secondo e le cerca nel 3o vector (che magari non sarebbe male fosse ordinato cosi puoi fare ricerca binaria); se ne trova una la toglie, se non la trova la aggiunge.
    Non so dirti se esiste un metodo dei vector cerca nella guida dell'stl
    purtroppo i tempi mi risultano essere proibitivi per completare l'operazione (ca 120 giorni mettendoci 2 min. ca per ogni riga)

    ogni riga del primo file infatti deve essere confrontata con tutte le 85.000 righe del secondo e così via per tutte le 84.000 righe del primo file...

    operazioni totali : 84.000 x 85.000 = 7.140.000 operazioni

    Mi chiedevo appunto se fosse possibile un'operazione + rapida che richiedesse al massimo due o tre giorni di elaborazioni...


  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    39
    Se ci metti 2 min per riga sei fregato!diventa molto impo l'ordinamento del 3o vettore!
    Anche perche' quella funzione che hai citato non credo proprio che faccia qualcos'altro...puoi cercare quale sia l'implementazione di quella funzione per capire se e' piu performante ma ne dubito!
    Comunque non e possibile che ci metta cosi tanto perche per metterci 2 minuti dovrebbero essere circa 12 GB per riga! e 160000 righe cosi' in che hard disk le fai stare?

  6. #6
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    no no ogni riga è costituita appena da 3 numeri intervallati da virgola!

    Originariamente inviato da p91paul
    Se ci metti 2 min per riga sei fregato!diventa molto impo l'ordinamento del 3o vettore!
    Anche perche' quella funzione che hai citato non credo proprio che faccia qualcos'altro...puoi cercare quale sia l'implementazione di quella funzione per capire se e' piu performante ma ne dubito!
    Comunque non e possibile che ci metta cosi tanto perche per metterci 2 minuti dovrebbero essere circa 12 GB per riga! e 160000 righe cosi' in che hard disk le fai stare?
    voglio dire i due files txt da confrontare sono costituiti entrambi da qualcosa di questo tipo semplicemente...

    file1.txt

    1,2,3
    4,10,11
    ecc...

    file2.txt

    45,78,90
    2,44,78
    ecc...

    Quindi? Quanto ci dovrei mettere secondo te? E soprattutto con quale metodo + pratico e veloce?

    GRAZIE!!!


  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    39

    Re: con il for l'ho già fatto... ma...

    Originariamente inviato da freetom
    ogni riga del primo file infatti deve essere confrontata con tutte le 85.000 righe del secondo e così via per tutte le 84.000 righe del primo file...

    operazioni totali : 84.000 x 85.000 = 7.140.000 operazioni
    hai ragione... a parte che hai dimenticato 3 zeri ma io intendevo un'altra cosa!

    se tu hai il vettore ordinato (usa sort (iterator begin, iterator end) ), poi passi il secondo vector e per ogni elemento fai bynary_search(non ricordo i parametri), impieghi n log n per l'ordinamento e n log n per le ricerche che vuol dire
    84000*16circa+85000*16circa=2700000 operazioni circa.
    Il computer ne fa piu o meno 100'000'000 al secondo pero devi moltiplicare quei 3000000 per la lunghezza delle stringhe. Dovresti fare abbastanza veloce!

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    39
    Se sono 3 numeri per riga e fai come ti ho detto parliamo di tempi da misurare in secondi!O al massimo minuti!

  9. #9
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    ti chiedo di farmi degli esempi

    Grazie!

    Evidentemente sto impantanandomi in dei cicli infiniti quanto inutili


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.