Создание копии на указатель

146
08 ноября 2019, 03:00

Как можно скопировать из указателя на int в новую переменную, пытаюсь

int *wordC = new int[length + 2];
int *сopy = new int[length + 2];
copy(wordС, wordС, сopy);

в таком подходе на выходе массив copy остается с таким же мусором. Второй вопрос, почти про тоже самое, есть

char* file = new char[length];

нужно file скопировать только часть, к примеру с 10 до 16 позиции(в рантайме только становится известно откуда и сколько копировать) в новый массив

Answer 1

Для копирования элементов одного контейнера (массива) в другой контейнер (массив) можно использовать стандартный алгоритм std::copy, который объявлен в заголовке <algorithm>.

Например,

#include <iostream>
#include <algorithm>
int main()
{
    const size_t N = 10;
    int *src = new int[N];
    size_t pos = 3;
    size_t n = 5;
    for ( size_t i = 0; i < n; i++ ) src[pos + i] = i;
    int *dsn = new int[N];
    std::copy( src + pos, src + pos + n, dsn + pos );
    // или если нужно скопировать в начало массива dsn, то
    // std::copy( src + pos, src + pos + n, dsn );
    for ( size_t i = 0; i < n; i++ ) std::cout << dsn[pos + i] << ' ';
    std::cout << '\n';
    delete [] dsn;
    delete [] src;
}

Вывод программы на консоль

0 1 2 3 4

Первые два параметра алгоритма std::copy задают диапазон копируемых элементов исходного контейнера. Например, это может быть указатель на первый элемент копируемого диапазона элементов массива и указатель на элемент следующий за последним копируемым элементом диапазона. Последний параметр алгоритма указывает место контейнера назначения, куда будут копироваться элементы. Для массивов это может быть указатель на элемент массива, с которого начнется запись элементов исходного массива.

READ ALSO
не выводит строку [закрыт]

не выводит строку [закрыт]

Программа выводи количество, цену, общую сумму, но не выводит номер товара и его названиеЧто не так?

141
Передача данных из одного окна в другое. QT C++

Передача данных из одного окна в другое. QT C++

Возникла такая проблема - не могу передать текст из QLineEdit в QLabelНе знаю, почему, вроде все сделал правильно, но вот не работает

185
Сделать запрос к сайту Java [закрыт]

Сделать запрос к сайту Java [закрыт]

Сделать запрос к сайту, полученную инфу записать в файл или если json распарсить

153
Android playlist vlc player

Android playlist vlc player

Воспроизвести несколько видео файлов (из интернета) в vlc playerВ mx player есть такое - video_list

131