Предполагая, что «в правильной последовательности» вы имеете в виду от малого к большому, и предполагая, что вы готовы использовать C ++ 11, мы можем легко получить это с помощью лямбда-функции.См. Следующий пример.
#include <vector>
#include <algorithm>
std::vector<int> values({4, 6, 7, 2, 1, 5, 8, 10, 9, 3});
int number_of_moves = 0;
std::sort(begin(values), end(values), [&](int lhs, int rhs)
{
if (lhs > rhs)
return false;
++number_of_moves;
std::cout << "I am going to swap " << lhs << " with " << rhs << '\n';
return true;
});
std::cout << "I took me " << number_of_moves << " move(s) to sort the vector\n";
Примечание: мне не совсем понятно, что вы подразумеваете под "движениями в булевских значениях в c ++", поэтому я решил напечатать числа, которые будут заменены.
РЕДАКТИРОВАТЬ: на основе комментариев, я думаю, вы хотите посчитать количество движений, поэтому я добавил счетчик.Обратите внимание, что bool
может быть только истинным / ложным и не может использоваться для подсчета.