는 예를 들어, I는 (정적 변수 임) A는 [] 점 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))
};
하지만 [η]에 요소를 추가하는 경우, I 수동 [] 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를 변경하지 않고 []의 크기를 변경할 수 있습니다 수동으로 또는 코드의 다른 부분을 수정할 필요가 없습니다.
사용'표준 : vector' 그것을 채울 수있는'for' 루프}
와 함께. –