我有一个包含std::array<std::vector<T>, N> data_
成员的模板类。
目前,我可以用
构建它template<typename T, size_t N>
class A
{
public:
A(some parameters)
{
for (size_t n=0; n<N; n++) {
data_[n].resize(calculated size from parameters);
}
}
private:
std::array<std::vector<T>,N> data_;
};
是否有一些公式我可以将数组的初始化放在构造函数中?
例如,如果我只使用vector
然后使用索引功能,我可以
...
A(some parameters):
data_(std::vector<T>(N*previous size)) {}
...
答案 0 :(得分:3)
expire_date = datetime.datetime.now()
expire_date = expire_date + datetime.timedelta(seconds=900)
response.set_cookie("MyCook", "CookieVal", expires=expire_date)
https://docs.python.org/2/library/datetime.html#datetime.timedelta
答案 1 :(得分:1)
由于您初始化的主容器是std::array
,并且因为它只提供聚合初始化和,所以您想要对数组的大小进行参数化,我害怕你不能按照你想要的方式做到这一点。你需要生成一个初始化序列。据我所知,这只有可变参数模板。我试图将一些东西放在一起,但是使用其他答案的方法显然是最好的选择。
另一方面,总是有可能创建一个静态成员函数,在需要时返回数组:
Constructor (bool data) : member(initialiser(data)) {}
static array<vector<T>, N> initialiser(bool data) {
array<vector<T>, N> container;
// your code from above
return container;
}
虽然这是有争议的,并且取决于上下文是否有用。