我有一个存储的设置std::map
.例如,有值的WorldTime
键可以更新每个主循环迭代.我不想在我需要时从地图上读取它(它也在每帧处理),我认为它根本不快.那么,我可以获得指向地图值的指针并访问它吗?代码是:
std::map<std::string, int> mSettings;
// Somewhere in cycle:
mSettings["WorldTime"] += 10; // ms
// Somewhere in another place, also called in cycle
DrawText(mSettings["WorldTime"]); // Is slow to call each frame
Run Code Online (Sandbox Code Playgroud)
所以这个想法是这样的:
int *time = &mSettings["WorldTime"];
// In cycle:
DrawText(&time);
Run Code Online (Sandbox Code Playgroud)
怎么了?我应该这样做吗?
最好用一个参考:
int & time = mSettings["WorldTime"];
Run Code Online (Sandbox Code Playgroud)
如果密钥尚不存在,则[]
-access将创建元素(并对映射值进行值初始化,即0
对于a int
).或者(如果密钥已存在):
int & time = *mSettings.find("WorldTime");
Run Code Online (Sandbox Code Playgroud)
顺便说一句:如果你有成千上万的字符串键或者按字符串键使用查找很多,你可能会发现a std::unordered_map<std::string, int>
给出了更好的结果(但总是在决定之前进行配置).这两个地图具有几乎相同的接口,可满足您的需求
归档时间: |
|
查看次数: |
3568 次 |
最近记录: |