好的,所以我正在寻找"最好的方法"来弄清楚如何处理这个问题.
我有一些设置的布尔值,并希望存储和访问它们更清洁.
-- Current
bool MySetting1;
bool MySetting2;
bool MySetting3;
bool MySetting4;
.....
Accessed with
.....
if (MySetting1)
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我知道我的设置是什么以及所有有趣的爵士乐.我已经考虑了选项并环顾了地图和无序地图和布尔矢量......我只是在寻找最优化的做事方式.因为目前的方式......很好......在我看来它并不是很干净.
enum myEnum
{
SETTING_NAME1 = 0,
SETTING_NAME2 = 0,
...
}
map<int,bool> myMap;
Run Code Online (Sandbox Code Playgroud)
执行myMap [SETTING_NAME1]的访问时间是否与当前方法相同?它是直接访问还是必须进行查找?
我只是想更新,让每个人都知道我采取的策略.
我使用enum进行识别
enum myEnum
{
SETTING_NAME1 = 0,
SETTING_NAME2 = 1,
...
}
Run Code Online (Sandbox Code Playgroud)
和矢量来保存和调用数据
vector<bool> myVec;
if (myVec[SETTING_NAME1])
Run Code Online (Sandbox Code Playgroud)
这应该让我直接访问,保持大小相对较小(因为它是一个基于位的矢量),以及我想要的分离.
直接访问bool显然比通过地图或其他任何方式访问它更快.但是,这是不可能永远是性能的关键,差异将是微不足道的.
我建议不担心性能在所有的这样的事情,如果它干扰丝毫写作尽可能清晰的代码.担心这是浪费时间和过早优化,没有收获.您可以做的最好的事情是编写清晰,易懂的代码,然后信任编译器优化器,并花时间在性能关键区域优化代码(当然,通过分析确定,而不仅仅是直觉/猜测),它将产生实际的差异.