我有一组带有以下记录的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
...
答案 0 :(得分:4)
class GPSPoint
{
vector<char> label;
double lat, lon, h;
}
它不是字符串且可动态分配。
答案 1 :(得分:2)
好吧,std::string
是 解决方案,我无法想象为什么你要避免它。
说实话,我根本就没有标签。让你的观点课程只包含坐标;你可以在那个逻辑之外处理标签。
答案 2 :(得分:0)
在第一种情况下,您需要在其他位置为字符串内容分配内存。绝对没有理由更喜欢std :: string。
您应该能够找到有关字符串最大长度的文档,以减少固定字符数组的大小。
我当然希望你有充分的理由解雇std :: string。