Многомерный стандарт std :: valarray и неравенства

Следующий фрагмент кода не компилируется:

#include <valarray>

int main()
{
std::valarray<std::valarray<int>> a;
std::valarray<std::valarray<int>> b;
//std::valarray<std::valarray<bool>> c;
std::valarray<bool> c;
c = (a == b);
return 0;
}

Ни одно из заявлений с компиляции. Разрешено ли использовать valarray указанным выше способом или существуют ограничения на его использование.

1

Решение

Я считаю, что у меня есть решение, хотя я могу ошибаться

Так как begin а также end являются не связанные с перегрузками, ты используешь begin(a) вместо a.begin() и так далее.

Мой выбор в использовании std::transform это то, что вы хотите перебрать a а также b, сравнить их и сохранить результаты в cвот почему лямбда возвращает std::valarray<bool> (вместо bool).

   std::valarray<std::valarray<int>> a;
std::valarray<std::valarray<int>> b;
std::valarray<std::valarray<bool>> c;

std::transform(begin(a), end(a), begin(b), begin(c),
[&] (std::valarray<int> a_val, std::valarray<int> b_val)
-> std::valarray<bool> {
return std::valarray<bool>(a_val == b_val);
});
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]