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.