std::copy (tsz. std::copies)
std::copy
egy STL algoritmus C++-ban, amely lehetővé teszi, hogy egy tartomány elemeit átmásold egy másik tartományba.
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
)
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
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
✅ 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
std::copy
nem törli a cél konténer meglévő elemeit — egyszerűen felülír vagy hozzáfűz (ha illesztőt használsz).std::copy_if
, ahol csak a feltételt teljesítő elemek kerülnek átmásolásra.
👉 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!