通过初始化列表“:”部分的 const 字段的 C++ 初始化
c++ initialization of const field via initializer-list ":" section
在下面的代码中,我如何声明 vv
为常量:vector<vector<float>> const vv;
?例如。是否有任何 c++0x 版本可以让我在 : ...
“initializer-list”部分循环,before the {}
?
#include <vector>
using std::vector;
struct ST {
vector<int> const x; // simple constructor, initializ. via ": x(x)"
vector<vector<float>> vv; // requieres loop, can be done in ": ..."?
ST(vector<int> x, std::initializer_list<vector<float>> lv) : x(x) {
for (auto v : lv) {
vv.push_back(v);
}
}
};
std::vector
有一个带有初始化列表的构造函数,你不需要循环:
struct ST {
vector<int> const x;
vector<vector<float>> const vv;
ST(vector<int> x, std::initializer_list<vector<float>> lv) :
x(x),
vv{lv}
{}
};
如果您的示例过于简单并且您确实需要一个循环,您可以使用 static
方法来初始化初始化列表中的 const
个成员:
struct ST {
vector<int> const x;
vector<vector<float>> const vv;
ST(vector<int> x, std::initializer_list<vector<float>> lv) :
x(x),
vv{create_vector(lv)}
{}
static vector<vector<float>> create_vector(std::initializer_list<float> lv);
};
在下面的代码中,我如何声明 vv
为常量:vector<vector<float>> const vv;
?例如。是否有任何 c++0x 版本可以让我在 : ...
“initializer-list”部分循环,before the {}
?
#include <vector>
using std::vector;
struct ST {
vector<int> const x; // simple constructor, initializ. via ": x(x)"
vector<vector<float>> vv; // requieres loop, can be done in ": ..."?
ST(vector<int> x, std::initializer_list<vector<float>> lv) : x(x) {
for (auto v : lv) {
vv.push_back(v);
}
}
};
std::vector
有一个带有初始化列表的构造函数,你不需要循环:
struct ST {
vector<int> const x;
vector<vector<float>> const vv;
ST(vector<int> x, std::initializer_list<vector<float>> lv) :
x(x),
vv{lv}
{}
};
如果您的示例过于简单并且您确实需要一个循环,您可以使用 static
方法来初始化初始化列表中的 const
个成员:
struct ST {
vector<int> const x;
vector<vector<float>> const vv;
ST(vector<int> x, std::initializer_list<vector<float>> lv) :
x(x),
vv{create_vector(lv)}
{}
static vector<vector<float>> create_vector(std::initializer_list<float> lv);
};