Какой подход лучше использовать в C ++ для создания типа House
,
struct Coord {
double latitude;
double longitude;
};
struct House {
string number; // example: 17A
vector<Coord> coordinates;
bool isCompletelyStraight;
};
или же
using Latitude = double;
using Longitude = double;
using Coord = pair<Latitude, Longitude>;
using Number = string; // example: 17A
using IsCompletelelyStraight = bool;
using House = tuple<Number, vector<Coord>, IsCompletelelyStraight>;
?
Первый подход намного проще поддерживать, поэтому я всегда буду за этим. Второй подход подобен использованию шаблонов, когда вам на самом деле это не нужно.
Пара не очень хорошая идея, потому что вы должны использовать их какcoordinates[i].first, coordinates[i].second'
в то время как более чисто просто иметь структуру Coord и получить доступ к элементу вектора как coordinates[i].latitude, coordinates[i].longitude
Как насчет чего-то вроде этого:
using Latitude = double;
using Longitude = double;
struct Coord
{
Latitude latitude;
Longitude longitude;
};
using CoordsContainer = vector<Coord>;
struct House {
string number; // example: 17A
CoordsContainer coordinates;
bool isCompletelyStraight;
};
Других решений пока нет …