Инициализация двух массивов std::valarray в std::pair
#include <valarray>
int main()
{
const int length = 5;
typedef std::valarray<int> ArrayInt;
std::pair<ArrayInt, ArrayInt> PairArray;
PairArray.first = ;
PairArray.second = ;
return 0;
}
Хочу инициализировать два массива valarray, созданные в std::pair. Объекты класса valarray можно инициализировать так: std::valarray my_arr(0, length), что означает инициализацией нулями 5 элементов массива
Но я не могу так сделать через обращения к объектам класса pair PairArray.first(...) PairArray.second(...)
Почему?
Ответы (1 шт):
Автор решения: AR Hovsepyan
→ Ссылка
//например
std::pair PairArray{ ArrayInt(length), ArrayInt(length) };
PairArray.first = ArrayInt(4, length); //четверки
/*если хотите нули, то это значение по умолчанию, потому
нет необходимости его передавать _ просто ArrayInt(length)*/
//можете также по разному получать ArrayInt. Например
//списком инициализации
PairArray.second = { 7, 7, 7, 7, 7 };
//или генерировать значения функцией
PairArray.second = (PairArray.first).apply([](int k) {return /*something*/; });
Или иначе. Главное получить std::valarray<int> или std::slice_array<int> или std::gslice_array<int> или std::mask_array<int> или std::initializer_list<int> в правом операнде