Перейти к содержимому

Как соединить два массива в один c

  • автор:

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

P.S. Если элементы в массиве «а» могут повторяться, то приведенный выше цикл повторяется два раза. С заменой b[] на a[] и установкой значения ic=1.

Отслеживать
ответ дан 19 сен 2013 в 17:45
oleg_ismaylov oleg_ismaylov
860 10 10 золотых знаков 30 30 серебряных знаков 59 59 бронзовых знаков

  • массивы
  • c++
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

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

Массивы по своей сути это структура данных, представляющая упорядоченную коллекцию индексированных элементов.

И довольно часто в практике возникает необходимость объединения массивов — когда два и более отдельных массивов превращаются в большой массив содержащий все элементы первоначальных массивов.

Например объединение массива [1,2] и [5,6] приведет к появлению массива [1,2,5,6]

Мы рассмотрим три способа объединить массивы в JavaScript: 2 иммутабельных (новый массив создается после объединения)

Способ 1 — объединение массивов через оператор spread

Если вам нужен один хороший способ объединения массивов в JavaScript, тогда оператор spread — ваш выбор.

Напишите внутри массива две или более переменных с префиксом в виде spread оператора . и JavaScript объединит их в один новый массив. Собственно синтаксис:

const result = [. array1, . array2];

Как пример предположим у нас есть два массива содержащих фамилии студентов students1 и students2

const students1 = ['Иванов', 'Сидоров']; const students2 = ['Петров', 'Курочкина']; const all = [. students1, . students2]; all; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина'] 

const all = [. students1, . students2] создает новый массив содержащий элементы исходных массивов students1 и students2

Порядок в котором вы перечисляете массивы при помощи оператора spread имеет значение! Элементы массива вставляются в том порядке в котором идут переменные этих массивов.

В нашем примере поменяем порядок:

const students1 = ['Иванов', 'Сидоров']; const students2 = ['Петров', 'Курочкина']; const all = [. students2, . students1]; all; // ['Петров', 'Курочкина', 'Иванов', 'Сидоров'] 

Spread оператор позволяет объединять 2 и более массивов:

const newArray = [. array1, . array2, . array3, . arrayN];

Способ 2 — объединение массивов методом array.concat()

Если вы предпочитаете функциональные методы объединения массивов, то можете использовать array1.concat(array2) метод:

const newArray = array1.concat(array2);

или в другом варианте

const newArray = [].concat(array1, array2);

array.concat() не изменяет исходные массивы, а формирует новый имеющий в составе элементы объединяемых массивов.

Давайте попробуем повторить пример из первого способа:

const students1 = ['Иванов', 'Сидоров']; const students2 = ['Петров', 'Курочкина']; const all_1 = students1.concat(students2); const all_2 = [].concat(students1,students2); all_1; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина'] all_2; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина'] 

Метод concat позволяет объединять более двух массивов:

const newArray = [].concat(array1, array2, array3, arrayN);

Способ 3 — объединение массивов через метод array.push()

Как мы видели ранее два предыдущих способа создают новый массив содержащий исходные, но иногда необходимо не создавать новый массив, а добавить один массив в другой. В этом случает один из исходных массивов будет изменен.

Вы наверняка знаете что метод array.push(item) добавляет к имеющемуся массиву новый элемент и ставит его в конец массива.

const students = ['Иванов']; students.push('Сидоров'); students; // ['Иванов', 'Сидоров'] 

Благодаря тому факту что array.push(item1, item2, . itemN) может принимать множественное количество элементов, мы можем запушить целый массив через оператор spread примененный к аргументу:

array1.push(. array2); 

И если брать пример с нашими студентами то получим:

const students1 = ['Иванов', 'Сидоров']; const students2 = ['Петров', 'Курочкина']; students1.push(. students2); students1; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина'] 

А какой из способов используете вы? Поделитесь в комментариях

Как соединить два массива в один c

Здравствуйте! Подскажите, пожалуйста, как можно объединить два массива в один новый массив? Спасибо Большое.

Регистрация: 19.12.2008
Сообщений: 5,788

Имеем некоторую переменную k=0 — хранит индекс текущего элемента нового массива.
Проходим по первому массиву и копируем его в новый

for(i=0; i

далее проходим по второму массиву

for(i=0; i

Сообщение от vvviperrr
ну или через memcpy
Точно Забыл про нее..

Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=] _____ [Поиск] _____ [Литература по С++] ____ [Литература. Паскаль]

Последний раз редактировалось Sazary; 12.06.2009 в 00:03 .

Developing.ru

C++ - Объединить два упорядоченных массива в один

7 сообщений • Страница 1 из 1
miros_0571 Сообщения: 2 Зарегистрирован: 25 апр 2015, 19:18

Заданы два упорядоченных массива А и В, состоящих из N и M вещественных элементов соответственно. Соединить их в один массив С, так чтобы его элементы были упорядочены.

Помогите разобраться и найти ошибку. работает. надо исключить одинаковые элементы

#include #include const int N= 6; const int M= 7; int main() < int A[N]=; int B[M]=; int*C=new int[N+M]; int i=0; int j=0; for (int k=0;k for (int k=0; k

Decoder Сообщения: 303 Зарегистрирован: 19 фев 2008, 23:11 Откуда: Moscow
Наверно лучше сделать так.

 int i = 0; // A[i] int j = 0; // B[j] int k = 0; // C[k] while (i < N || j < M) < int v = 0; if (i < N && j < M) < v = (A[i] < B[j])? A[i++] : B[j++]; >else < v = (N < M)? B[j++] : A[i++]; >if (k > 0 && C[k-1] == v) continue; C[k++] = v; > // Вывод результата. for (int m = 0; m < k; m++) std::cout  

Поумнеть несложно, куда труднее от дури избавиться.

Romeo Сообщения: 3091 Зарегистрирован: 02 мар 2004, 17:25 Откуда: Крым, Севастополь Контактная информация:

Следует рассматривать не два случая (A меньше B[j], иначе), а три случая (A меньше B[j], A больше B[j], иначе). В третьем случае (когда они равны), следует C[k] присваивать любой из A или B[j] (ведь они равны), но после этого увеличивать ОБА индекса i и j.

Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

Romeo Сообщения: 3091 Зарегистрирован: 02 мар 2004, 17:25 Откуда: Крым, Севастополь Контактная информация:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *