map lookups函数调用Vs将查找缓存为静态变量

时间:2013-10-09 14:50:05

标签: c++ function stl

函数版本1,map stl查找一次并保存在本地静态变量

inline const string & dataInputPath()
{
    static string inputpath = Mngr.getStr("input");
    return inputpath;
}

函数版本2,每次调用函数时循环

inline const string & dataInputPath()
{
    return Mngr.getStr("input");
}

我有两个函数调用, 我想知道

  1. 什么被认为更合适?
  2. 利弊?
  3. 您更喜欢使用哪一个?为什么?
  4. 如果有一种方法可以将结果缓存为rValue getStr返回类型为const string&

1 个答案:

答案 0 :(得分:0)

在第一个中,一旦调用了dataInputPath,即使地图中的值发生更改,也不会更新该值。

我只是直接从地图中检索值。如果需要,将它留给调用代码以合理的方式缓存值。

由于关键的“输入”是硬编码的,为什么不只是拥有全局的input_string变量?