我怎么能给c++ vector赋值
How could I assign values to c++ vector
我知道我可以像这样初始化一个向量:
vector<int> v{1,3,4,6};
但是,当我定义一个包含向量的 class 时,我无法在声明它的位置对其进行初始化,如下所示:
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;...}
。因此我必须处理其他一些事情才能知道如何初始化这个向量,所以我不能按照某些答案中的建议使用初始化列表。有什么建议吗?
以下方法可行:
C::C()
: v{ 1, 3, 4, 6 }
{}
注意,在上面的代码中,您将 std::initializer_list
传递给 std::vector
的构造函数。
你可以像
这样在成员初始化器列表中初始化它
class C{
public:
vector<int> v;
C() : v {1,3,4,6} {}
};
或使用 default member initializer (C++11 起) 如
class C{
public:
vector<int> v {1,3,4,6};
C() {}
};
您可以为构造函数使用初始化列表。
关于根据您编辑的问题进行条件初始化,只需将矢量内容初始化为 0,然后应用您需要的任何条件并相应地初始化特定值:
class C
{
public:
vector<int> v;
C() : v{0,0,0,0}
{ if(v.size()==4) // your condition
v[0]=1;
}
};
这应该有效:
#include <vector>
class C {
std::vector<int> v;
public :
C() {
if(...)
v = { 0, 1, 2, 3, 4 };
else
v = { 5, 6, 7, 8, 9, 10, 11, 12};
//and other statement
}
};
我知道我可以像这样初始化一个向量:
vector<int> v{1,3,4,6};
但是,当我定义一个包含向量的 class 时,我无法在声明它的位置对其进行初始化,如下所示:
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;...}
。因此我必须处理其他一些事情才能知道如何初始化这个向量,所以我不能按照某些答案中的建议使用初始化列表。有什么建议吗?
以下方法可行:
C::C()
: v{ 1, 3, 4, 6 }
{}
注意,在上面的代码中,您将 std::initializer_list
传递给 std::vector
的构造函数。
你可以像
这样在成员初始化器列表中初始化它class C{
public:
vector<int> v;
C() : v {1,3,4,6} {}
};
或使用 default member initializer (C++11 起) 如
class C{
public:
vector<int> v {1,3,4,6};
C() {}
};
您可以为构造函数使用初始化列表。
关于根据您编辑的问题进行条件初始化,只需将矢量内容初始化为 0,然后应用您需要的任何条件并相应地初始化特定值:
class C
{
public:
vector<int> v;
C() : v{0,0,0,0}
{ if(v.size()==4) // your condition
v[0]=1;
}
};
这应该有效:
#include <vector>
class C {
std::vector<int> v;
public :
C() {
if(...)
v = { 0, 1, 2, 3, 4 };
else
v = { 5, 6, 7, 8, 9, 10, 11, 12};
//and other statement
}
};