std::merge
Megjelenés
Főnév
std::merge (tsz. std::merges)
- (informatika) A
std::mergealgoritmus a C++ STL (Standard Template Library) egyik fejlettebb algoritmusa, amely lehetővé teszi két rendezett tartomány összefésülését egy egyetlen rendezett tartományba.
- Nem távolítja el a duplikált elemeket → minden elem bekerül az eredménybe, megtartva a rendezett sorrendet.
- A két bemeneti tartományt egyesíti úgy, hogy az eredmény is rendezett marad.
🕹️ Szintaxis
std::merge(first1, last1, first2, last2, result);
first1,last1→ első tartomány kezdete és vége (iterátorok)first2,last2→ második tartomány kezdete és vége (iterátorok)result→ az eredménytárolóba mutató kimeneti iterátor (pl.std::back_inserter, vagy előre lefoglalt konténer iterátora)
⚙️ Hogyan működik?
- Párhuzamosan bejárja a két bemeneti tartományt.
- Mindig a kisebb (vagy egyenlő) elemet teszi be az eredménybe.
- Ha két elem egyforma, akkor mindkettőt beszúrja, de sorrendben, ahogy a bemenetekből jönnek.
- Addig folytatja, amíg mindkét bemeneti tartomány ki nem fogy.
📝 Példa
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> first = {1, 3, 5, 7, 9};
std::vector<int> second = {2, 4, 6, 8, 10};
std::vector<int> result;
std::merge(first.begin(), first.end(), second.begin(), second.end(),
std::back_inserter(result));
std::cout << "Összefésült eredmény: ";
for (int num : result) {
std::cout << num << " ";
}
return 0;
}
Kimenet:
Összefésült eredmény: 1 2 3 4 5 6 7 8 9 10
🏗️ Mire jó?
- Két rendezett tömböt (vektort, listát stb.) szeretnél összeolvasztani úgy, hogy az eredmény is rendezett legyen.
- Pl. ha merge sort algoritmust írsz → itt a
std::mergepont ezt a lépést valósítja meg. - Ha két adatforrásból (pl. két adatbázis lekérdezésből) kapsz rendezett adatokat → hatékonyan össze tudod fésülni.
🚩 Fontos megjegyzések
✅ Rendezett bemenetet vár → ha nem rendezett a két bemenet, az eredmény hibás lesz. ✅ Nem távolít el duplikált elemeket → ha azonos elemek vannak a bemenetekben, mindkettő bekerül. ✅ Az eredmény sorrendhelyes, vagyis az eredmény is növekvő (vagy ha fordított sorrendű bemenet, akkor annak megfelelő).
🎁 Egy összefoglaló:
| Tulajdonság | Részlet |
|---|---|
| Algoritmus neve | std::merge |
| Bemenet | 2 db rendezett tartomány |
| Kimenet | 1 db rendezett tartomány |
| Duplikátumok | Benne maradnak |
| Használat | Merge sort, adatfésülés, adatösszevonás |
| Időkomplexitás | O(n1 + n2) |
- std::merge - Szótár.net (en-hu)
- std::merge - Sztaki (en-hu)
- std::merge - Merriam–Webster
- std::merge - Cambridge
- std::merge - WordNet
- std::merge - Яндекс (en-ru)
- std::merge - Google (en-hu)
- std::merge - Wikidata
- std::merge - Wikipédia (angol)