В C и C ++, как переместить некоторые элементы в массиве в новый массив?

0

Например, как я могу перенести 1-й, 5-й и 10-й элементы в массив A в новый массив из трех элементов, не назначая отдельно три раза?

  • 4
    ... попросить кого-нибудь сделать три задания?
  • 0
    Вам нужно будет выполнить три задания, так или иначе. Если вы решите, что memmove() (или memcpy() ) не считается назначением, тогда я полагаю, вы могли бы использовать это вместо этого. (Также для дальнейшего использования используйте один из тегов C или C ++, но не оба. Очень часто ответ зависит от того, какой язык вы используете, и ответ в C ++ может радикально отличаться от ответа в C.)
Теги:
arrays

2 ответа

3
Лучший ответ

В C просто объявите и инициализируйте новый массив с выбранными элементами вашего массива. Нет необходимости в назначении.

int main(void)
{
    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int b[3] = {a[0], a[4], a[9]};

    return 0;
}

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

  • 0
    В C ++ это работает также.
0

Просто выполните три задания! Почему вы избегаете этого?

int ar1[10], ar2[10];

ar2[0] = ar1[0];
ar2[4] = ar1[4];
ar2[9] = ar1[9];

Однако, если у вас есть много индексов для перемещения, возможно, вам нужен другой способ.

Я предлагаю следующее:

int ar1[1000], ar2[1000];

int indices[] = { 1, 3, 54, 6, 23, 35, 9, 42, 44, 995, 722, .... };
for (int i = 0; i < sizeof(indices) / sizeof(indices[0]); i++)
{
    ar2[i] = ar1[i];
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню