【发布时间】:2012-01-21 15:18:56
【问题描述】:
如果我想在一个类中初始化一个向量,例如:
class A {
private:
static std::vector<double> label_map;
};
如果我想初始化这个静态向量,最好的方法是什么?我在其他一些帖子中看到说,从 GCC 4.4 开始,它支持 C++0x 中的新功能,我们可以直接使用
static std::vector<double> label_map = {1, 2, 3, 4};
不过好像对我不起作用。
【问题讨论】:
-
问题是什么 - 如何获得 C++ 编译器?从 GCC 网站下载它...
-
嗯,你是在命令行中添加
-std=c++0x吗? -
label_map { 1, 2, 3, 4 }比label_map = {1, 2, 3, 4}更好,因为前者用1, 2, 3, 4初始化向量,而后者创建一个临时向量并使用向量复制构造函数来制作label_map -
@derekhh 你是对的,你可以这样做的唯一方法是静态变量是
const并且是整数类型,并且你永远不会获取它的地址。 -
@Kerrek:Derp,第二部分应该是“静态、常量和整数类型”。
标签: c++ vector static initialization c++11