初始化成员Vector值
C++: Initializing member Vector values
我是c++新手。我知道使用初始化列表来初始化成员变量总是更好,而不是在构造函数体中这样做…
例如,class MyClass {
MyClass(int Value) : m_Value(Value) { }
private:
int m_Value;
}
优于
class MyClass {
MyClass(int Value) {
m_Value = Value;
}
private:
int m_Value;
}
,因为后者初始化变量两次。
然而,我想知道在初始化成员向量时应该做些什么。
假设我有一个这样的类:
class MyClass {
MyClass();
private:
std::vector<std::string> m_StringVector;
}
我想初始化成员vector的值,因为vector的内容总是相同的(常量),无论实例如何…
例如,我知道名为"signs"的成员向量总是有3个成员:"正"、"负"、"零"。"
所以我想这样做:
class MyClass {
MyClass() : signs({"positive", "negative", "zero"}) { }
private:
std::vector<std::string> signs;
}
首先,这可能吗?
第二,如果可能的话,这是一种推荐的做法吗?谢谢
这是可能的*您可以省略()
:
MyClass() : signs{"positive", "negative", "zero"} { }
,但你也可以在声明点进行初始化:
std::vector<std::string> signs{"positive", "negative", "zero"};
这样做的好处是,在所有没有显式初始化vector的构造函数中,都以相同的方式初始化vector。
现在,如果vector的元素总是相同的,并且如果vector不会被修改,你可以考虑使它成为static
的成员,这样你就有一个单独的实例被MyClass
的所有实例共享。
*除非你坚持使用c++ 11之前的编译器
相关文章:
- 在C++中将类(带有Vector成员)保存为二进制文件
- 为什么我的类 std::vector 成员总是抛出段错误?
- 如何将带有 std::vector 成员的类移动到<class>另一个向量<class>中?
- 简化存储在类的 std::vector 成员中的 std::函数的使用
- 如何实例化没有默认构造函数的类型的 boost::fusion::vector 成员变量
- C++:通过引用将 std::vector<> 成员返回到临时对象
- 在 ctor 中使用 const&vector 初始化的 const&vector 成员
- 在 std::vector 成员中取消分配数组
- 我应该<T>在我的类的 std::vector 成员变量中使用 std::unique_ptr 吗?
- 移动 std::vector 成员的语义
- 访问可能不存在的const vector成员- try/catch或if (count != 0)
- 返回对vector成员变量的引用
- 发送具有std::vector成员的结构时出现分段错误
- 为一个c++ vector成员添加一个标志
- vector成员变量是否可以未初始化(内存错误)
- 如何在类模板的构造函数中初始化vector成员变量
- 为带有std::vector成员的std::vector的类实现移动语义的正确方法
- 如何将' std::vector '成员变量移动到方法的调用方
- 增强shared_ptr vector成员访问
- 以多态方式使用派生类的std::vector成员的复制赋值会导致内存泄漏