C++-ban több tömbből az elemeket hogy bírom átmásolni egyetlen tömbbe?
Létrehozol egy akkora tömböt amilyen a másik 2 tömb nagysága.
ciklussal végigmész mind 2 tömbön és belerakod a 3. tömben egymás után :)
Inkább használj vektort, egyszerűbb és jobb:
template<class T>
std::vector<T> Merge(const std::vector<T> &a, const std::vector<T> &b)
{
std::vector<T> m(a.size() + b.size());
std::copy(a.begin(), a.end(), m.begin());
std::copy(b.begin(), b.end(), m.begin() + a.size());
return m;
}
template<class T>
T* Merge(const T a[], const T b[], unsigned int size1, unsigned int size2)
{
T *m = new T[size1 + size2];
std::copy(a, &a[size1], m);
std::copy(b, &b[size2], m + size1);
return m;
}
Jogos.
De nagy adatnál például képnél ha sokszor kell ilyet végrehajtani, jobb ha csak a pointert tárolja a vektorban és azt dobálgatja ide-oda.
Én ellenzem a tömb elem címének a felhasználását, mert könnyebb elszúrni. Szerintem jobb ciklussal mint a copy-val.
template<typename T>
T* merge(T *a, size_t na, T *b, size_t nb)
{
T *c = new T[na + nb];
size_t j = 0;
for(size_t i = 0; i < na; i++) {
c[j] = a[i];
j++;
}
for(size_t i = 0; i < nb; i++) {
c[j] = b[i];
j++;
}
return c;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!