Size: a a a

2020 August 20

IK

Ivan Koliesnik in supapro.cxx
Roman Yastrebckov
народ, привет, корректно ли такое удаление из вектора по индексу?
   for(uint i = 0; i < (uint)contours.size() ; i++) {
       double area = contourArea(contours[i]);
       printf("area of countour %d = %f.\n", i, area);
       if ((area < 10) || (area > 50))
           contours.erase(contours.begin() + i);
   }
break; делай после удаления, либо реверсивно инкрементируй с for (i = size-1; i !=0 --i;) (как-то так)
просто так при удалении изменяется размер массива, и вылетишь за пределы
источник

RY

Roman Yastrebckov in supapro.cxx
не, за пределы не вылетает
просто условие что-то не совсем корректно работает
источник

RY

Roman Yastrebckov in supapro.cxx
а вот с —i норм, вроде :)
спасибо!
источник

IK

Ivan Koliesnik in supapro.cxx
Roman Yastrebckov
не, за пределы не вылетает
просто условие что-то не совсем корректно работает
тебе нужно только оставить в пределах от 10 до 50?
источник

RY

Roman Yastrebckov in supapro.cxx
Да
источник

IK

Ivan Koliesnik in supapro.cxx
я бы через иттератор бы сделал в цикле, а так то принципе норм, ток сравнивание int и double может подсвеить
источник

RY

Roman Yastrebckov in supapro.cxx
делал через итератор + remove_if
contourArea не знает как его обсчитать
а без неё беда
источник

IK

Ivan Koliesnik in supapro.cxx
Roman Yastrebckov
делал через итератор + remove_if
contourArea не знает как его обсчитать
а без неё беда
for (auto &it : contour) так пробовал? либо (*it) что бы дочстать число
источник

RY

Roman Yastrebckov in supapro.cxx
неа
щас попробую
источник

V

Viαη in supapro.cxx
Roman Yastrebckov
народ, привет, корректно ли такое удаление из вектора по индексу?
   for(uint i = 0; i < (uint)contours.size() ; i++) {
       double area = contourArea(contours[i]);
       printf("area of countour %d = %f.\n", i, area);
       if ((area < 10) || (area > 50))
           contours.erase(contours.begin() + i);
   }
а там не будет большая сложность? n раз удаляешь элемент, удаление это n, получается O(n^2)
не лучше сделать второй вектор и в нгео копировать?
источник

RY

Roman Yastrebckov in supapro.cxx
можно и так
источник

RY

Roman Yastrebckov in supapro.cxx
вставка в вектор работает быстрее?
источник

L

Lee Armstrong in supapro.cxx
Вопрос по std::map
std::pair<iterator,bool> insert( const value_type& value );
Моожет ли перезаписать уже находящееся в мапе по ключу значение?
источник

V

Viαη in supapro.cxx
Roman Yastrebckov
вставка в вектор работает быстрее?
вставка в конец за единицу если не нужно изменять размер выделенной памяти (которая capacity)
источник

RY

Roman Yastrebckov in supapro.cxx
размер не надо изменить
тогда через & и push_back?
источник

V

Viαη in supapro.cxx
Roman Yastrebckov
размер не надо изменить
тогда через & и push_back?
&?
источник

RY

Roman Yastrebckov in supapro.cxx
(area > 10) & (area < 50)
источник

V

Viαη in supapro.cxx
Roman Yastrebckov
(area > 10) & (area < 50)
а, да
источник

V

Viαη in supapro.cxx
Roman Yastrebckov
(area > 10) & (area < 50)
а значения, равные 10 и 50 оставлять надо? в твоем коде ты их оставляешь, а здесь нет
источник

RY

Roman Yastrebckov in supapro.cxx
ну, особо нет разницы
источник