Как я могу построить std::array
с индексной последовательностью или лямбдой, которая зависит от последовательного индекса?
std::iota
и std::generate
кажутся релевантными, но я не уверен, как их использовать для построения std::array
, а не применять их на том, что уже построено (что невозможно в случае, если элемент тип массива не является конструктивным по умолчанию).
Пример такого кода, который я бы хотел использовать DRY:
#include <array>
class C
{
public:
C(int x, float f) : m_x{x}, m_f{f} {}
private:
int m_x;
float m_f;
};
int main()
{
std::array<int, 10> ar = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::array<C, 3> ar2 = {C{0, 1.0}, C{1, 1.0}, C{2, 1.0}};
return 0;
}