class Point c++

251
25 июля 2017, 19:06

Существует ли класс или структура Point (точка) в stl или её аналог?

Answer 1

Как таковой нет.
Если вам нужна точка на плоскости - вы можете использовать структуру pair<>, но она недостаточно удобна (поля - first и second, а не x и y).
Можно использовать тот же array с фиксированным количеством элементов.

Но проще всего - написать

struct Point {
    double x, y;
};

и не мучиться :)

Answer 2

"Точка" — это понятие, которое зависит от предметной области. В математике будет точка координатами double, обычно с двумя или тремя компонентами, но в общем случае число произвольное, причём название компонент может быть разным из-за различных систем координат. В контролах Windows будет точка с двумя координатами int, в каких-то случаях int16_t. В играх наибольшее применение найдут точки с координатами float. В консоли точкой будет пара unsigned int. И это мы ещё не рассматриваем сопутствующие классы, например, вектора и матрицы, и доступные операции между ними.

Как можно видеть, точки могут быть очень разнообразными. В связи с этим вносить в STL класс точки достаточно нецелесообразно: придётся плодить десятки классов с различными типами, именами и количеством компонент, а их применимость будет весьма ограничена из-за отсутствия взаимодействия с классами, которые гармонично сочетаются с классом точки.

Класс точки можно найти в библиотеках, более близких к предметным областям, например, для математических рассчётов, для элементов управления, для движков игр. Используйте их.

Если у вас что-то своё, то не составит труда написать собственный тривиальный класс точки — это две строчки кода.

READ ALSO
Как написать InputIterator?

Как написать InputIterator?

Есть некоторый генератор, который выдает значенияЕго интерфейс описывается тремя функциями:

277
Как получит HWND окна при наведении на него курсора мыши?

Как получит HWND окна при наведении на него курсора мыши?

Как получить HWND окна при наведении на него курсора мыши С++ WinApi32 или Qt?

233
Почему строковый литерал в С++ это l-value?

Почему строковый литерал в С++ это l-value?

Например строковый литерал: "Hello, world!" не может стоять слева от оператора присваиванияТогда, как он может являться леводопустимым выражением?

296
Добавить класс к ссылке

Добавить класс к ссылке

Есть менюНужно, чтобы при нажатии на любой из пунктов меню - он подчеркивался черной линией

330