Как выглядит y.size() = 4 в следующем? Значения в y равны {11, 2, 4, 7}. Как это получается? Что такое a и b в функции operator() для каждой итерации множества. Я не понимаю конструкции y, и я не могу найти что-либо в Интернете, что объясняет эту ситуацию. Спасибоset constructor с пользовательской функцией сравнения
#include <iostream>
#include <set>
struct C
{
bool operator()(const int &a, const int &b) const
{
return a % 10 < b % 10;
}
};
int main()
{
std::set<int> x({ 4, 2, 7, 11, 12, 14, 17, 2 });
std::cout << x.size() << std::endl;
std::set<int, C> y(x.begin(), x.end());
std::cout << y.size() << std::endl;
std::set<int>::iterator iter;
for (iter = y.begin(); iter != y.end(); ++iter)
{
std::cout << *iter << std::endl;
}
return 0;
}
, но какие два значения сравниваются? Как получить значение 11 для первого элемента y? – VarsMolta
@ VarsMolta, потому что 11 mod 10 меньше 2 mod 10, 4 mod 10 и 7 mod 10. – chris
@ VarsMolta Я обновил ответ с подробным объяснением. – rutsky