std::copy
Megjelenés
Főnév
std::copy (tsz. std::copies)
- (informatika) A
std::copyegy STL algoritmus C++-ban, amely lehetővé teszi, hogy egy tartomány elemeit átmásold egy másik tartományba.
Szintaxisa:
std::copy(begin_iterátor, end_iterátor, cél_begin_iterátor);
begin_iterátor: a forrás tartomány kezdeteend_iterátor: a forrás tartomány végecél_begin_iterátor: az a hely, ahová az elemeket másolni szeretnéd (általában egy iterátor egy másik konténer elejére vagy pl.std::back_inserter)
Mit csinál?
- A forrás tartomány összes elemét átmásolja a cél tartományba.
- A cél tartományban helyet kell biztosítani, vagy illesztőt (inserter) kell használni.
Példa 1 — Másolás előre lefoglalt vector-be:
#include <iostream>
#include <vector>
#include <algorithm> // for std::copy
int main() {
std::vector<int> source = {1, 2, 3, 4, 5};
std::vector<int> destination(5); // hely lefoglalva
std::copy(source.begin(), source.end(), destination.begin());
for (int n : destination) {
std::cout << n << " ";
}
return 0;
}
Kimenet:
1 2 3 4 5
Példa 2 — Másolás back_inserter segítségével:
Ha a cél konténer üres, vagy nem akarunk előre helyet foglalni, használhatunk illesztőt:
#include <iostream>
#include <vector>
#include <algorithm> // for std::copy
#include <iterator> // for std::back_inserter
int main() {
std::vector<int> source = {1, 2, 3, 4, 5};
std::vector<int> destination; // üres vector
std::copy(source.begin(), source.end(), std::back_inserter(destination));
for (int n : destination) {
std::cout << n << " ";
}
return 0;
}
Kimenet:
1 2 3 4 5
Mire használható?
✅ Elemek másolása egyik konténerből a másikba ✅ Részleges másolás is lehetséges (pl. csak az első N elem másolása) ✅ Univerzális — működik bármilyen iterátorral elérhető konténerre
Megjegyzések:
- A
std::copynem törli a cél konténer meglévő elemeit — egyszerűen felülír vagy hozzáfűz (ha illesztőt használsz). - Ha feltételes másolást szeretnél, van
std::copy_if, ahol csak a feltételt teljesítő elemek kerülnek átmásolásra.
Összefoglalva:
👉 std::copy = elemek másolása egyik tartományból a másikba 👉 Használható pl.: vector → vector, list → vector, array → vector, stb. 👉 Ha nincs előre hely foglalva, használd std::back_inserter-t!