Передача двойного указателя в качестве аргумента функции, которая ожидает ссылку на std :: vector <double> - PullRequest
1 голос
/ 27 сентября 2019

Есть ли какой-либо возможный способ передать указатель на double (double *) в качестве аргумента функции, которая ожидает ссылку на аргумент std::vector<double> в C ++ 11

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Это будет невозможно, вам придется копировать данные в векторе

vector<double> v(ptr, ptr + length);

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

0 голосов
/ 27 сентября 2019

Вместо того, чтобы копировать данные в вектор, вы также можете изменить функцию на , взяв span.Вы все равно должны будете указать длину вместе с указателем.

Например,

void takes_span(std::span<double>) {}

int main()
{
    std::vector<double> vec = { 1, 2, 3 };
    double arr[3] = { 4, 5, 6 };
    double * ptr = arr;

    takes_span(vec);
    takes_span(arr);
    takes_span({ptr, 3});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...