我有一个项目,其中包含许多向量、集合和映射。在大多数情况下,键/索引是整数。我正在考虑创建像这样的小类:
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,并选择变量名称来表达每个索引的含义。而采用上述方法,我的变量名称可以更短。
注意: 类型定义并不能完全解决我的问题,因为编译器不会执行任何额外的类型检查,在内部所有类型都将是int。
struct PersonIx { int n; }
更短,完全相同,也不需要任何 typedef。我认为除了在代码使用类型时由于包装器而人为地使其不够优化之外,也不会有任何开销。 - fork0