Столкнулся с той же проблемой, использовал этот
Console.log (Date.parse («13 июня 2018 10:50:39 GMT + 1»));
Он вернет миллисекунды, к которым вы можете проверить, есть +100 timzone intialize британское время Надеюсь, что это поможет !!
Скорее всего, вы захотите упаковать код в определенную функцию инициализации. Поскольку (std::
) массивы различной длины на самом деле являются разными типами, тем не менее, вам либо нужна функция шаблона, либо вам нужно работать с внутренними необработанными массивами (data()
):
template <typename T>
void initialize(T& t)
{
for(auto& a : t)
// ^ reference to pointer (!)
{
a = new A();
a->foo();
}
std::cout << std::endl;
}
Затем просто вызовите эту функцию для каждого массива. Если это все еще не достаточно коротко, вы можете упаковать это в шаблонную функцию:
template <typename T, typename ... TT>
void initialize(T& t, TT& ... tt)
{
initialize(t);
initialize(tt...);
}
// alternatively, a bit shorter, with C++17 fold expression:
template <typename ... TT>
void initialize(TT& ... tt)
{
(initialize(tt), ...);
}
В точке вызова это, скорее всего, будет самое короткое время, которое вы можете получить (кроме выбора еще более короткого имени ):
initialize(array1, array2, array3, array4, ...);
Вы можете сделать что-то вроде:
template <std::size_t N>
using As = std::array<A*, N>;
std::tuple<As<size1>, As<size2>, As<size3>, As<size4>, As<size5>,
As<size6>, As<size7>, As<size8>, As<size9>> arrays;
std::apply([](auto& ...as)
{
auto l = [](auto& a)
{
for (auto& element : a)
{
element = new A();
element->foo();
}
};
(l(as), ...);
}, arrays);
Или даже проще:
template <size_t N>
std::array<A*, N> MakeAs()
{
std::array<A*, N> res;
for (auto& element : res)
{
element = new A();
element->foo();
}
return res;
}
и
auto array1 = MakeAs<size1>();
auto array2 = MakeAs<size2>();
auto array3 = MakeAs<size3>();
auto array4 = MakeAs<size4>();
auto array5 = MakeAs<size5>();
auto array6 = MakeAs<size6>();
auto array7 = MakeAs<size7>();
auto array8 = MakeAs<size8>();
auto array9 = MakeAs<size9>();
//C++ 11 SFINAE fold
template<size_t I = 0, typename F, typename ...Ts>
typename std::enable_if<I == sizeof...(Ts)>::type //I == end
for_each(std::tuple<Ts...>&, const F&) {}
template<size_t I = 0, typename F, typename ...Ts>
typename std::enable_if<I < sizeof...(Ts)>::type //I < end
for_each(std::tuple<Ts...>& tuple, const F& function)
{
function(std::get<I>(tuple));
for_each<I + 1>(tuple, function);
}
//C++ 17
template<size_t I = 0, typename F, typename ...Ts>
void for_each(std::tuple<Ts...>& tuple, const F& function)
{
if constexpr(I < sizeof...(Ts))
{
function(std::get<I>(tuple));
for_each<I + 1>(tuple, function);
}
}
//Client
for_each(std::tie(array1, array2, array3, array4, array5, array6, array7, array8, array9),
[](auto& array)
{
for(auto* element : array)
{
element = new A();
element->foo();
}
});