【发布时间】:2012-07-19 19:00:45
【问题描述】:
我有一个包含许多向量、集合和地图的项目。在大多数情况下,键/索引是一个整数。我正在考虑创建小类,例如:
class PhoneRepoIx //index into map {phone_number => pointer}
{
public:
int n;
};
class PersonIx //index into map {social_security_number => pointer}
{
public:
int n;
};
我会招致任何速度或内存损失吗?有了内存,我 90% 确信每个实例没有内存成本,只有每个类类型。速度我不清楚。
动机: 使用上述方法,编译器会为我做一些额外的类型检查。此外,通过精心选择的显式类型名称,我的代码的读者将更容易看到我在做什么。到目前为止,我在任何地方都使用 int 并且我选择了变量名来表达每个索引是什么。有了以上内容,我的变量名可能会更短。
注意: Tyepdefs 没有完全解决我的问题,因为编译器不会做任何额外的类型检查,在内部所有类型都只是 int。
【问题讨论】:
-
写
struct PersonIx { int n; }更短,完全相同,也不需要任何类型定义。而且我还认为不会有任何开销(除非使用该类型的代码由于包装器而人为地低于最佳值) -
Tyepdefs do not address my issue completely as the compiler would not do any extra type-checking, internally all the types would just be int.这是什么意思?你认为你需要什么“额外的类型检查”?我们需要在这里使用一个用法示例。 -
@Falmarri:“你的最后一个订单是 5 太多了。” “5”是指数量、包裹重量、付款金额、付款日期吗?
-
忽略反对者,他们是无知的。这是一个很好的方法。
-
@BenVoigt 我不认为这是重复的,原因有以下三个:1) 尽管其中一些答案很好,但另一个问题的公认答案很糟糕。 2)这个问题是在性能影响之后专门询问的。 3)“重复”实际上是关于 C(这解释了接受的答案)。
标签: c++