omaxphp
@omaxphp
Выучиться не значит знать

Как объединить массивы на c++?

#include <iostream>
using namespace std;

class IntQueue {
public:
   int size = 1;

   int* base = new int[size];
   int* copy = new int[size];

   IntQueue() {
       base[0] = 0;
       copy[0] = 0;
   }

   push(int arg){
       size++;

       delete[] base;
       int* base = new int[size];
       for (int i = 0; i < size; i++){
           if (i != (size-1)) {
               base[i] = copy[i];
           } else {
              base[i] = arg; // добавка в конец
           }


       }

       delete[] copy;
        int* copy = new int[size];
        for (int i = 0; i < size; i++){
             copy[i] = base[i];
             cout << copy[i] << endl;

        }
   }

};



int main(){

    IntQueue q;
    q.push(2);
    cout << endl;
    q.push(5);

    cout << endl;
    q.push(8);

    cout << endl;
    q.push(10);




    cout << "Hello World!" << endl;
    return 0;
}


Пытался конактенировать, объединить массивы, но ничерта не разбираюсь в памяти C++, не знаю как просто склеить два динамических массива, никто не может подсказать или привести качественный пример?
  • Вопрос задан
  • 3569 просмотров
Решения вопроса 1
Вам нужно выделить новый массив размер которого = размер_массива_1 + размер_массива_2, а после скопировать в него данные по очереди из 1го и из 2го.
В вашем коде в функции push создаются новые массивы:
int* base = new int[size];
//...
int* copy = new int[size];

и эти массивы видны только до конца функции push, а оригинальные вы не трогаете вообще, а только освобождаете по ним память.

Функция push должна выглядеть как-то так(код набирал тут):
push(int arg){
       new *int new_array = new int[size+1]
       for (int i = 0; i < size; i++){
          new_array[i]=base[i];
       }
       new_array[size] = arg;
       delete[] base;
       base = new_array;
       size++;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Использовать std::vector и его метод append в частности.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы