STL valarray
От: Архипов Дмитрий Николаевич Россия  
Дата: 22.04.02 18:31
Оценка:
Есть:

double m[]={1, 2, ...};
и
valarray < double > m_Coeff;

Как правильно и _красиво_ можно заполнить m_Coeff значениями из m[]?
Использование конструктора m_Coeff(m, N) в объявлении не подходит.
Re: STL valarray
От: Zero  
Дата: 22.04.02 18:47
Оценка:
Здравствуйте Архипов Дмитрий Николаевич, Вы писали:

АДН>Есть:


АДН>double m[]={1, 2, ...};

АДН> и
АДН>valarray < double > m_Coeff;

АДН>Как правильно и _красиво_ можно заполнить m_Coeff значениями из m[]?

АДН>Использование конструктора m_Coeff(m, N) в объявлении не подходит.

Почему не подходит?

Например:
m_Coeff = valarray(m, sizeof(m)/sizeof(m[0]));

Или:
std::copy(&m_Coeff[0], &m_Coeff[m_Coeff.size() — 1], m);

Лучше, конечно, не стоит, так как то, что (&m_Coeff[i])++ == &m_Coeff[i+1]
вовсе не гаратнируется.
Re[2]: STL valarray
От: Архипов Дмитрий Николаевич Россия  
Дата: 22.04.02 20:49
Оценка:
Здравствуйте Zero, Вы писали:

Z>Почему не подходит?

Z>Например:
Z> m_Coeff = valarray(m, sizeof(m)/sizeof(m[0]));
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ не работает:
error C2955: 'valarray' : use of class template requires template argument list
Re[3]: STL valarray
От: Zero  
Дата: 22.04.02 21:13
Оценка:
Здравствуйте Архипов Дмитрий Николаевич, Вы писали:

АДН>Здравствуйте Zero, Вы писали:


Z>>Почему не подходит?

Z>>Например:
Z>> m_Coeff = valarray(m, sizeof(m)/sizeof(m[0]));

АДН>error C2955: 'valarray' : use of class template requires template argument list


Странно, не выводит аргумент что-ли? Ну тогда:
m_Coeff = valarray<double>(m, sizeof(m)/sizeof(m[0]));
Re[4]: STL valarray
От: Андрей Тарасевич Беларусь  
Дата: 22.04.02 21:28
Оценка: 3 (1)
Здравствуйте Zero, Вы писали:

Z>>>Почему не подходит?

Z>>>Например:
Z>>> m_Coeff = valarray(m, sizeof(m)/sizeof(m[0]));

АДН>>error C2955: 'valarray' : use of class template requires template argument list


Z>Странно, не выводит аргумент что-ли? Ну тогда:

Z> m_Coeff = valarray<double>(m, sizeof(m)/sizeof(m[0]));

А почему оно должна выводить аргумент? 'valarray' — имя шаблона класса. Для шаблонов классов в С++ аргументы никогда не выводятся. Только для шаблонов функций.
Best regards,
Андрей Тарасевич
Re[5]: STL valarray
От: Zero  
Дата: 23.04.02 07:03
Оценка:
Здравствуйте Андрей Тарасевич, Вы писали:

АТ>А почему оно должна выводить аргумент? 'valarray' — имя шаблона класса. Для шаблонов классов в С++ аргументы никогда не выводятся. Только для шаблонов функций.



Да, кончено же. Я тормоз.
Re[4]: STL valarray
От: Архипов Дмитрий Николаевич Россия  
Дата: 23.04.02 18:55
Оценка:
Здравствуйте Zero, Вы писали:

Z>>> m_Coeff = valarray(m, sizeof(m)/sizeof(m[0]));

АДН>>error C2955: 'valarray' : use of class template requires template argument list

Z>Странно, не выводит аргумент что-ли? Ну тогда:

Z> m_Coeff = valarray<double>(m, sizeof(m)/sizeof(m[0]));

Угу! Спасибочки большое.

p.s. еще раз убедился, как мало я знаю
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.