Как назначить элементы массива указателю, указывающему на выделенный массив - PullRequest
0 голосов
/ 07 марта 2020
#include <iostream>
int main() {
    int arr[3] = {10, 11, 12};
    int *p_arr = new int[3];
    *p_arr = *arr;  // This is how I assign, does not work
    std::cout << *(p_arr+1);  // Not results 11
}

Я хочу избежать указателя, указывающего на массив stati c, поэтому я бы назначил или скопировал элементы массива stati c в новый выделенный массив. Есть ли способ сделать это напрямую, без итеративного назначения?

1 Ответ

0 голосов
/ 07 марта 2020

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

#include <iostream>

int main() {
    int arr[3] = {0, 1, 2};
    int *p_arr = new int[3];
    int length = sizeof(arr)/sizeof(int);
    std::copy(arr+0, arr+length, p_arr+0);  // Copy elements
    cout << sizeof(arr[0])/sizeof(int) << endl << *(p_arr+2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...