我知道我可以像这样初始化一个 vector :
vector<int> v{1,3,4,6};
但是,当我定义一个包含 vector 的类时,我无法在声明它的位置对其进行初始化,如下所示:
class C {
public:
vector<int> v;
C();
};
因此我需要在构造函数中对其进行初始化。以下代码有效,但不干净:
C::C() {
v.resize(4);
v[0]=1;
v[1]=3;
v[2]=4;
v[3]=6;
}
我怎么能像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;...}
.因此我必须处理其他一些事情才能知道如何初始化这个 vector ,所以我不能按照某些答案中的建议使用初始化列表。有什么建议吗?
最佳答案
以下将起作用:
C::C()
: v{ 1, 3, 4, 6 }
{}
请注意,在上面的代码中,您传递了 std::initializer_list
到 std::vector
的构造函数。
关于c++ - 我怎么能给c++ vector赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61094527/