Если вы спрашиваете, что делает operator ()
, это позволяет вам вызывать объект как функцию.См. эту статью для примера.
Если вы спрашиваете, что делает функция в вашем примере, она сравнивает значения двух элементов, указанных индексами, переданными функции.begin + first
относится к элементу с индексом first
, начиная с итератора begin
, аналогично begin + second
.*(begin + first)
получает значение в этом месте.
Вы можете использовать этот класс с любым контейнером STL (который поддерживает произвольный доступ), передав пару итераторов.Например, вы можете использовать его с таким вектором:
vector<int> vec;
/* add some elements here */
IndexCompare<vector<int>::iterator> compare(vec.begin(), vec.end());
Теперь, например, вызов compare(2, 5)
будет сравнивать значения vec[2]
и vec[5]
.