Представление точки GPS - PullRequest
0 голосов
/ 14 июля 2011

У меня есть набор точек GPS со следующими записями:

point_label    lat       lon      H
FraEur3        N35.3575  E12.4617 207.39

Я думаю о подходящем представлении данных для метки точки.

Что лучше:

class GPSPoint
{
   char * label;
   double lat, lon, h;
};

или

class GPSPoint
{
   char label[255];
   double lat, lon, h;
};

Первый вариант имеет меньшее потребление памяти, но мне нужно написать конструктор копирования, operator=, деструктор и т. Д.

Второй вариант проще кодировать, но он потребляет больше памяти.

Какой вариант вы рекомендуете? Я не хочу использовать std::string ...

Ответы [ 3 ]

4 голосов
/ 14 июля 2011
class GPSPoint
{
   vector<char> label;
   double lat, lon, h;
}

Это не строка, а динамически размещаемая.

2 голосов
/ 14 июля 2011

Ну, std::string - это решение, и я не могу представить, почему вы хотели бы избежать его.

Если честно, у меня не было быярлык там вообще.Пусть ваш точечный класс просто содержит координаты;Вы можете обрабатывать маркировку вне этой логики.

0 голосов
/ 14 июля 2011

В первом случае вам нужно будет выделить память в другом месте для содержимого строки. Нет абсолютно никаких причин предпочитать это std :: string.

Вы сможете найти документацию по максимальной длине строки, чтобы уменьшить размер вашего фиксированного массива символов.

Я очень надеюсь, что у вас есть веская причина отклонить std :: string из-под контроля.

...