例如,我有一對陣列(這是一個靜態變量)一個[]表示點A的座標,B,C:是否可以根據另一個硬編碼數組的數據自動生成硬編碼數組?
pair<float,float> MyClass::a[]={{0,0},{320,568},{640,0}};
,我想另一個數組b [],其存儲長度AB和BC的:
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 []不是很維護,因爲如果我添加元素的[],我需要手動更改b []。有沒有可以自動生成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;
或其他設計模式,可以讓我改變的[]大小而不b變更手動或者甚至不需要修改代碼的其他部分?
使用'的std :: VECTOR'和'for'循環來填充它。 –