代表gps点

时间:2011-07-13 20:35:19

标签: c++ point

我有一组带有以下记录的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 个答案:

答案 0 :(得分:4)

class GPSPoint
{
   vector<char> label;
   double lat, lon, h;
}

它不是字符串且可动态分配。

答案 1 :(得分:2)

好吧,std::string 解决方案,我无法想象为什么你要避免它。

说实话,我根本就没有标签。让你的观点课程只包含坐标;你可以在那个逻辑之外处理标签。

答案 2 :(得分:0)

在第一种情况下,您需要在其他位置为字符串内容分配内存。绝对没有理由更喜欢std :: string。

您应该能够找到有关字符串最大长度的文档,以减少固定字符数组的大小。

我当然希望你有充分的理由解雇std :: string。