coi*_*ung 1 c++ vector stdvector c++11
我知道我可以像这样初始化一个向量:
vector<int> v{1,3,4,6};
Run Code Online (Sandbox Code Playgroud)
但是,当我定义一个包含向量的类时,我无法在我声明它的位置初始化它,如下所示:
class C {
public:
vector<int> v;
C();
};
Run Code Online (Sandbox Code Playgroud)
因此我需要在构造函数中初始化它。以下代码有效,但不干净:
C::C() {
v.resize(4);
v[0]=1;
v[1]=3;
v[2]=4;
v[3]=6;
}
Run Code Online (Sandbox Code Playgroud)
我怎么能像初始化一样整齐直接地初始化它,vector<int> v{1,3,4,6};而不是一个一个地赋值?
编辑:也许我没有把我的情况说清楚。{1,3,4 6} 的值可能不是预定义的值,它们取决于一些逻辑和条件:if(condition_a) {v[0] = 0; v[1]=3; ...} else {v[0]=4;v[0]=8;...}. 因此,我必须处理其他一些事情才能知道如何初始化这个向量,所以我不能按照某些答案中的建议使用初始化列表。请问有什么建议吗?
以下将起作用:
C::C()
: v{ 1, 3, 4, 6 }
{}
Run Code Online (Sandbox Code Playgroud)
请注意,在上面的代码中,您将 传递std::initializer_list给std::vector的构造函数。
您可以在成员初始值设定项列表中对其进行初始化,例如
class C{
public:
vector<int> v;
C() : v {1,3,4,6} {}
};
Run Code Online (Sandbox Code Playgroud)
或者使用默认成员初始值设定项(C++11 起),如
class C{
public:
vector<int> v {1,3,4,6};
C() {}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1668 次 |
| 最近记录: |