多くのベクトル、セット、マップを含むプロジェクトがあります。ほとんどの場合、キー/インデックスは整数です。次のような小さなクラスを作成することを検討しています。
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 を使用しており、各インデックスが何であるかを表す変数名を選択しました。上記により、私の変数名は短くなる可能性があります。
注: Typedefs は、コンパイラが追加の型チェックを行わず、内部的にすべての型が単に int になるため、私の問題に完全には対処しません。