Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка типа данных при использовании вектора, ошибка при использовании vector в alglib 
:(
    Опции темы
cheska
Дата 29.11.2011, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Нужно для расчетов использовать библиотеку alglib
Данные (double) хранятся в векторе который с помощью встроенной alglib функции копирую в массив.
Получаю ошибку несоответствия типов.
Помогите разобраться как заставить работать
Код

alglib::real_1d_array x;
    alglib::real_1d_array y;
    alglib::ae_int_t info;
    alglib::spline1dinterpolant s;
    alglib::spline1dfitreport rep;
    std::vector<double> xData;
    std::vector<double> yData;

    /* заполняю вектор данными*/
    xData.push_back(1);
    xData.push_back(8);
    ...
    yData.push_back(2.08752);
    yData.push_back(3.39591);
    ...

    /* копирую вектор в массив*/
    x.setcontent(xData.size(),xData);
    y.setcontent(yData.size(),yData);


После этого на последних 2-х строках компилятор выдает ошибку

: E2034 Cannot convert 'vector<double,allocator<double> >' to 'const double *'
: E2342 Type mismatch in parameter 'pContent' (wanted 'const double *', got 'vector<double,allocator<double> >')

Если копирую массив типа <double> такой ошибки нет, а с вектором появляется. Но нужно скопировать именно вектор.
PM MAIL   Вверх
bsa
Дата 29.11.2011, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



cheska, вектор - это не просто массив. Почитай о нем подробней.
А тебе надо писать так:
Код
    x.setcontent(xData.size(), &xData[0]);
    y.setcontent(yData.size(), &yData[0]);

PM   Вверх
cheska
Дата 29.11.2011, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 30.3.2007

Репутация: нет
Всего: нет



Спасибо. буду еще разбираться. 
В принципе сам пришел к такому выводу , но сделал немного по другому
Код

    x.setcontent(xData.size(),&xData.at(0));
    y.setcontent(yData.size(),&yData.at(0));

чтоб ловить ошибки если вектор пустой.
Но работает и так и так
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1025 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.