初始化全局<键,值>哈希

jcu*_*nod 9 c++ qt initialization global-variables

我想将QHash初始化为全局变量.

因为它是全局的我不能写类似的东西

QHash<QString, int> MY_HASH;
MY_HASH["one"] = 1;
MY_HASH["two"] = 2;
Run Code Online (Sandbox Code Playgroud)

但我不确定如何在其初始化中为MY_HASH分配值.

dee*_*146 19

如果使用c ++ 0x,则可以使用initializer_list,如下所示:

QHash<QString, int> MY_HASH({{"one",1},{"two",2}});
Run Code Online (Sandbox Code Playgroud)

在gcc中,使用命令行标志-std = c ++ 0x启用c ++ 0x

  • 你也可以使用统一初始化:`QHash <QString,int> MY_HASH {{"one",1},{"two",2}};`,这会丢掉额外的parens. (7认同)
  • 这只适用于Qt5,其中QHash有一个带有std :: initializer_list的构造函数.在Qt4中没有直接的方法来初始化它. (2认同)

Xeo*_*Xeo 8

做一个功能?

typedef QHash<QString, int> hash_type

hash_type InitMyHash(){
  hash_type hash;
  hash["one"] = 1;
  hash["two"] = 2;
  // ...
  return hash;
}

hash_type MY_HASH = InitMyHash();
Run Code Online (Sandbox Code Playgroud)