2015-04-28 3 views
-1

Я работаю над образцами OpenCV. Я не уверен, как установить размер (ширина * высота) многих прямоугольников (полученных путем вызова функции-члена «размер» класса Rect в цикле) в массиве.Сохраните возвращаемые значения функции-члена в массиве в C++

Я планирую назначить размер прямоугольников массиву с помощью указателей.

Любые предложения приветствуются. Спасибо.

+2

Вы имеете в виду, например, 'arr [i] = size (...);'? – Quentin

+0

Почему бы не поместить прямоугольники непосредственно или указатели на прямоугольник в массиве? Прямоугольник - это просто положение, ширина и высота с помощью соответствующих методов. Не должно быть причины изобретать еще один механизм хранения высоты и ширины. –

+0

Также рассмотрите использование вектора (std :: vector), а не массива, если вы точно не знаете, сколько прямоугольников вы будете иметь дело, и это число никогда не изменится. –

ответ

0

Существует действительно хороший talk, почему вы должны попытаться использовать алгоритмы вместо петель.

Если у вас есть Контейнер с ребрами, вы можете использовать std::transform. Если ваш контейнер называется rects и вы хотите хранить в в размерах массива, это будет использоваться в качестве

std::transform(rects.begin(), rects.end(), array, [](const Rect &rect) { 
    return rect.size().area(); 
}); 

Чтобы найти прямоугольник определенного размера (названный requested_size), вы можете использовать

std::find_if(rects.begin(), rects.end(), [requested_size](const Rect &rect) { 
    return requested_size==rect.size().area(); 
}); 
Смежные вопросы