[Comm] Ошибка (или нет?) в std::partition
Pavel Vainerman
pv на etersoft.ru
Пт Авг 25 01:13:08 MSK 2017
Добрый день.
Обнаружил тут странное поведение у std::partition().
Вот тестовый код (c++11).
#include <iostream>
#include <vector>
#include <iomanip>
#include <algorithm>
using namespace std;
void print( vector<int>& v )
{
for( const auto& i: v )
cout << setw(3) << i;
cout << endl;
}
int main()
{
vector<int> v = { -10, 0, -4, 5, -2 , 0, 3, 1, 7, 8, 9 };
print(v);
std::partition(v.begin(),v.end(),[](int v){ return v<0; });
print(v);
return 0;
}
Вот результат (первая строка, исходный вектор, вторая преобразованный,
опорный элемент 0).
-10 0 -4 5 -2 0 3 1 7 8 9
-10 -2 -4 5 0 0 3 1 7 8 9
Так вот смущает меня почему "5" не правее нулей?
Может ли кто-нибудь пояснить, почему так?
--
Pavel Vainerman
www.etersoft.ru
Подробная информация о списке рассылки community