- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,我有一个类,我在二进制文件中存储了一些有关的信息:
class car {
char car_manufacturer;
//other stuff
};
car_manufacturer
的值是以下值之一:
enum car_manufacturers : char {
VOLVO = 0,
AUDI,
MERCEDES
};
现在在这个示例应用程序中,用户需要他们的汽车制造商的字符串表示而不是数字,因此我创建了一个数组,其中包含枚举的字符串表示 ,其中数组的顺序与枚举,所以 car_manufacturer
可以用作数组索引
std::string car_manufacturers_strings[MERCEDES + 1] = {
"Volvo",
"Audi",
"Mercedes"
};
现在加载文件并从数据中创建一个 car
对象后,我可以简单地通过 car_manufacturers_strings[car.car_manufacturer]; 获取汽车的品牌,作为一个字符串;
这样做的好处是,如果汽车是同一品牌,我就不必在文件中存储一堆重复的字符串,这样我就可以节省很多空间。但这样做的缺点是代码稍微复杂一些。
那么这是好事还是坏事?
最佳答案
这是将枚举器的字符串表示形式提供为数组的非常标准的做法。
有一点是:
std::string car_manufacturers_strings[MERCEDES + 1] = {
"Volvo",
"Audi",
"Mercedes"
};
将字符串文字存储在二进制文件中,并在动态初始化阶段创建这些文字的拷贝作为 std::string
对象。
您可能希望将其更改为:
char const* const car_manufacturers_strings[MERCEDES + 1] = {
"Volvo",
"Audi",
"Mercedes"
};
这样它就不会不必要地创建这些拷贝。
关于c++ - 字符串池/实习——这是好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25621804/
在 IE 中不起作用
作者热门文章
滴滴打车优惠券免费领取
|
我是一名优秀的程序员,十分优秀!