c++ - 我怎么能给c++ vector赋值

标签 c++ c++11 vector stdvector

我知道我可以像这样初始化一个 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_liststd::vector的构造函数。

关于c++ - 我怎么能给c++ vector赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61094527/

相关文章:

c++ - 具有三元运算符和模板的自动

c++ - 通过引用传递 Complex real 和 imag

C++ 从命令行用 clang 编译,但不使用 CMake

templates - C++ std::function-like模板语法

unity-game-engine - 团结 :How to find the value of a vector 3 allong a specific axis?

c++ - C++中的虚拟乘法运算符

c++ - WM_DESTROY消息困惑

C++ 为 vector 设置 keyCompare 函数

c++ - ifstreams 的 vector

c++ - 如果您将类的一个对象作为参数动态分配内存,会发生什么情况?