у меня есть код flush[*it % 4].push_back(*(it++) /= 4);
и это было предназначено для push_back нового значения (старого значения / 4) перед увеличением итератора it, правильно ли это или как сделать это самым быстрым способом получить значение от итератора, разделить его на 4, сохранить его, использовать новое значение в push_back, а затем увеличить итератор?
Это довольно противно. Есть ли it
увеличивается до или после, *it % 4
? Подсказка: он не определен, поэтому ваш код не имеет четко определенных результатов. Это очень плохо. Кроме того, это, как правило, беспорядок: вы сделали две операции чтения и записи в одну переменную, а также присваивание и вызов функции, а также индекс. Это много для одного выражения.
Используйте несколько утверждений для реализации вашей логики.
Других решений пока нет …