Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [c++]function object

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]function object

    ciao,
    Ho una serie di strutture cosi composte:
    codice:
    struct struttura{
    int id;
    float[4][3]fMatrix;
    float[3] fPosition
    }
    Ho un applicazione che mi riempie un container stl(pensavo una mappa con indice l'id della struttura memorizzata map<int, struttura>) con le strutture correnti ogni 10 sec.
    ho pensato di utilizzare un container con le strutture correnti un container con tutte le strutture presenti vecchie(ossia quelle di 10 sec fa).

    A questo punto devo confrontare i 2 container e ottenere 2 container uno contenente le strutture nuove (quelle non presenti) e uno contenente quelle da cancellare presenti nel vecchio ma non nel nuovo.

    Oltre a questo vorrei ottenere le una mappa con le strutture con Fmatrix e fPosition cambiate dall' old.

    Come posso impostare con i function object?

    dico questo perchè ho letto che stl ha degli operatori tipo includes, union, intersection, difference and symmetric diffference, ma non ho cpito come lavorano.
    e soprattutto come si creano degli operatori di quel tipo , per ampliare le funzionalità.

    altra domanda sul tema ma piu generica:

    da quanto ho capito nella programmazione generica i function object evitano i cicli(oltre a separare l'algoritmo dall'implementazione) e lavorano sull' iterazione dell'oggetto indice corrente , oggetto indice corrente +1 , questo non è limitante?se voglio tenere in conto l'indice +1 del 3 o del 4 oggetto nel container come faccio?
    come posso passare parametri tenendo conto dell ' indice + x?


    grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ho risolto cosi' coi vector:

    codice:
     typedef vector<int> intV;  
        intV v, v2, v3Union;
    
    	v.push_back(0);
    	v.push_back(1);
    	v.push_back(2);
    	v.push_back(3);
    
    	v2.push_back(0);
    	v2.push_back(1);
    	v2.push_back(2);
    	v2.push_back(55);
    
    	intV::iterator it = v3Union.begin();
    	set_difference(v.begin(), v.end(), v2.begin(), v2.end(), insert_iterator<intV>(v3Union,it));
    
    
    	vector<int>::iterator itOut;
    	for(itOut = v3Union.begin();itOut!= v3Union.end();++itOut)
    		std::cout << *itOut << "\n";

    è corretto?

    ma ..
    soprattutto come si creano degli operatori di quel tipo , per ampliare le funzionalità.

    altra domanda sul tema ma piu generica:

    da quanto ho capito nella programmazione generica i function object evitano i cicli(oltre a separare l'algoritmo dall'implementazione) e lavorano sull' iterazione dell'oggetto indice corrente , oggetto indice corrente +1 , questo non è limitante?se voglio tenere in conto l'indice +1 del 3 o del 4 oggetto nel container come faccio?
    come posso passare parametri tenendo conto dell ' indice + x?
    come ad es è stato creata la funzione difference o union? penso che debbano aver accesso a tutto il vector , non solo per range indice e indice +1!

    poi, come posso definire un function object che ispeziona dei dati interni della struttura per vedere se sono modificati?tipo il less

    grazie.

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.