std::copy

Üdvözlöm, Ön a std::copy szó jelentését keresi. A DICTIOUS-ban nem csak a std::copy szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a std::copy szót egyes és többes számban mondani. Minden, amit a std::copy szóról tudni kell, itt található. A std::copy szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Astd::copy és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

std::copy (tsz. std::copies)

  1. (informatika) A std::copy egy 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 kezdete
  • end_iterátor: a forrás tartomány vége
  • cé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::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).
  • 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.: vectorvector, listvector, arrayvector, stb. 👉 Ha nincs előre hely foglalva, használd std::back_inserter-t!