Как преобразовать вектор в массив

Как преобразовать std::vector в double array[] ?

    Для этого достаточно простой трюк, так как теперь спецификация гарантирует, что векторы хранят свои элементы смежно:

     std::vector v; double* a = &v[0]; 

    Зачем? Вам нужно уточнить: нужен ли указатель на первый элемент массива или массив?

    Если вы вызываете функцию API, которая ожидает первого, вы можете сделать do_something(&v[0], v.size()) , где v – вектор double s. Элементы вектора смежны.

    В противном случае вам просто нужно скопировать каждый элемент:

     double arr[100]; std::copy(v.begin(), v.end(), arr); 

    Обеспечьте, чтобы не было достаточно достаточно, чтобы arr достаточно большим, но этот arr заполнен, или у вас есть неинициализированные значения.

    Для C ++ 11 vector.data() выполнит трюк.

     vector thevector; //... double *thearray = &thevector[0]; 

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

    Векторы эффективно представляют собой массивы под кожей. Если у вас есть функция:

     void f( double a[]); 

    вы можете назвать это следующим образом:

     vector  v; v.push_back( 1.23 ) f( &v[0] ); 

    Вам никогда не понадобится преобразовывать вектор в фактический экземпляр массива.

    Если у вас есть функция, вам, вероятно, понадобится следующее: foo(&array[0], array.size()); , Если вам удалось попасть в ситуацию, когда вам нужен массив, вам нужно реорганизовать, векторы – это в основном расширенные массивы, вы всегда должны их использовать.

    Мы можем сделать это с помощью метода data (). C ++ 11 предоставляет этот метод.

    Фрагмент кода

     #include using namespace std; int main() { ios::sync_with_stdio(false); vectorv = {7, 8, 9, 10, 11}; int *arr = v.data(); for(int i=0; i 
     std::vector vec; double* arr = vec.data(); 

    Вы можете сделать что-то вроде этого

     vector  id; vector  v; if(id.size() > 0) { for(int i = 0; i < id.size(); i++) { for(int j = 0; j < id.size(); j++) { double x = v[i][j]; cout << x << endl; } } } 
    Interesting Posts

    Можно ли использовать DYLD_LIBRARY_PATH для Mac OS X? И каков алгоритм поиска динамической библиотеки?

    Использование G ++ для компиляции нескольких файлов .cpp и .h

    Sudo без пароля при входе в систему с закрытыми ключами SSH

    Java Динамически Загрузка classа

    Какие символы мне нужно скрывать в документах XML?

    Как увеличить количество столбцов с помощью R в Linux

    Какой алгоритм для игры tic-tac-toe можно использовать для определения «лучшего движения» для ИИ?

    Как получить HTML-вывод UserControl в .NET (C #)?

    Свободно (ptr), где ptr является NULL поврежденной памятью?

    Mysql (mariadb) ERROR 1698 (28000): доступ запрещен для пользователя 'root' @ 'localhost'

    Угловой 2: Как использовать / импортировать http-модуль?

    Как заменить текст на CSS?

    Невозможно просмотреть Интернет в Mac OS X

    В чем преимущество использования fragmentов в Android, а не Views?

    Измените букву диска из командной строки или пакетного скрипта в Windows 8?

    Давайте будем гением компьютера.