STL - merge

Dal quinto capitolo di Designing Components with the C++ STL, di Ulrich Breymann. Algoritmi standard.

Sezione dedicata agli algoritmi di ordinamento, merging e operazioni correlate. Tutti gl algoritmi di questa sezione hanno due varianti. Una che usa l'operatore '<' per confrontare gli elementi, l'altra che usa una funzione o un functor chiamato comp.

5.5.4: merge

Usando merge() possiamo unire due sequenze ordinate in una. Passo dopo passo, i primi elementi delle due sequenze sono confrontati e il minore (o quello che soddisfa il criterio di ordinamento passato) viene messo nella sequenza di output.

Ad esempio:

#include<iostream>
#include<algorithm>
#include<vector>
#include<algo.h>

using namespace std;

void dump(const vector<int>& v) {
vector<int>::const_iterator it = v.begin();
while (it != v.end()) {
cout << *it++ << ' ';
}
cout << endl;
}

int main() {
vector<int> v1(6);
iota(v1.begin(), v1.end(), 0);
dump(v1);

vector<int> v2(10);
iota(v2.begin(), v2.end(), 0);
dump(v2);

vector<int> result(v1.size() + v2.size());
merge(v1.begin(), v1.end(), v2.begin(), v2.end(), result.begin());
dump(result);
}

Nessun commento:

Posta un commento