Я лично предпочитаю этот шаблон, который немного яснее и проще, за счет дополнительной переменной:
for (auto it = m.cbegin(), next_it = m.cbegin(); it != m.cend(); it = next_it)
{
next_it = it; ++next_it;
if (must_delete)
{
m.erase(it);
}
}
Преимущества этого подхода:
it
и next_it
остаются фиксированными на протяжении всей итерации, что позволяет вам легко добавлять дополнительные инструкции, ссылаясь на них, не зацикляясь на том, будут ли они работать по назначению (за исключением того, что вы не можете использовать it
после его удаления). Очевидно, что последняя версия numpy (v1.16.0) ломает что-то в pyinstaller, потому что упаковка приложения с numpy версией 1.15.4 работает нормально.