, например, у меня есть массив пар (который является статической переменной) а [], которая представляет собой координаты точек А, В, С:Можно ли автоматически генерировать массив жесткого кода в соответствии с данными другого массива жесткого кода?
pair<float,float> MyClass::a[]={{0,0},{320,568},{640,0}};
и я хочу еще один массив B [], который хранит длину АВ и ВС:
float MyClass::b[sizeof(a)/sizeof(pair<float,float>)-1]={
sqrt((a[1].first-a[0].first)*(a[1].first-a[0].first)+(a[1].second-a[0].second)*(a[1].second-a[0].second)),
sqrt((a[2].first-a[1].first)*(a[2].first-a[1].first)+(a[2].second-a[1].second)*(a[2].second-a[1].second))
};
но б [] не очень ремонтопригодны, потому что если я добавить элементы к [], мне нужно изменить б [] вручную. Существуют ли какие-либо методы, которые могут генерировать b [] автоматически? Есть ли что-нибудь подобное, например: макросы
float b[]={MACRO(a)};
или
float b[]={MACRO(sizeof(a)/sizeof(pair<float,float>))};
или шаблон:
template<int i>
struct s{
float b[]={something a[i+1]-a[i]};
};
s<sizeof(a)/sizeof(pair<float,float>)> _s;
или другие шаблоны проектирования, что позволяет мне изменить размер а [] без изменения б [] вручную или даже не нужно изменять другие части кодов?
Используйте 'станд :: VECTOR' и' for' петля для его заполнения. –