Отсортировать вектор по одному из полей, используя алгоритмы STL. По возможности использовать все перегрузки сортировки (фраза, которую я не понял).
struct Dot
{
double x,y,z;
};
std::vector<Dot> numbers = {
{123.0, 48.55, 0},
{-128.1, 0, 49.55},
{0,134.0,-59.1}
};
Здесь пример очень похож на правду, но я не могу свести до моей задачи.
По возможности использовать все перегрузки сортировки (фраза, которую я не понял).
В C++ функции могут быть перегружены - иными словами несколько функций с одним и тем же именем но разной сигнатурой могут одновременно быть определены в коде, и затем вызваны соответствующим образом.
В данном случае в роли такой функции должна выступать функция из стандартной библиотеки - std::sort(...)
Касательно вашей задачи - чтобы сортировать точки по какому-то полю (или координате), компилятору необходим "объяснить" как сравнивать точки (то есть структуры Dot
) - это можно сделать аж тремя способами:
Создать кастомный компаратор, перегрузив оператор ()
вызова функции (устаревший вариант)
struct Dot
{
double x,y,z;
};
std::vector<Dot> numbers = {
{123.0, 48.55, 0},
{-128.1, 0, 49.55},
{0,134.0,-59.1}
};
struct pred
{
bool operator()(const Dot& dot1, const Dot& dot2)
{
return dot1.x < dot2.x;
}
};
int main()
{
std::sort(numbers.begin(), numbers.end(), pred());
for (int i = 0; i < numbers.size(); ++i)
std::cout << numbers[i].x << " " << numbers[i].y << " " << numbers[i].z << '\n';
return 0;
}
Перегрузить оператор <
//...
bool operator < (const Dot& dot1, const Dot& dot2)
{
return dot1.x < dot2.x;
}
int main()
{
std::sort(numbers.begin(), numbers.end());
for (int i = 0; i < numbers.size(); ++i)
std::cout << numbers[i].x << " " << numbers[i].y << " " << numbers[i].z << '\n';
return 0;
}
Передать лямбду (раз уж вы указали 11-ый стандарт) в функцию сортировки из STL
//...
int main()
{
std::sort(numbers.begin(), numbers.end(), [](const Dot& dot1, const Dot& dot2) -> bool
{
return dot1.x < dot2.x;
}
);
for (int i = 0; i < numbers.size(); ++i)
std::cout << numbers[i].x << " " << numbers[i].y << " " << numbers[i].z << '\n';
return 0;
}
P.S.
Инклюды не писал, чтобы сократить код.
Как меняется крипторынок и к чему готовиться владельцам криптообменников
Как карусели bxslider (плагин для jQuery) настроить свои переходы между слайдами? Там есть переходы по слайдам вперёд и назад, мне нужно использовать...
Мне надо, чтобы при нажатии shift+P в textarea выделенный текст оборачивался в теги pТо есть