- 71 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 02:47:13 ]
- テンプレート使ってやってみました
漏れの知識の程度じゃ読みにくくなるだけしたまる #include <stdio.h> #include <numeric> #define ARRAY_SIZE(X) (sizeof(X)/(sizeof(X[0]))) #define INNER_PRODUCT(x,y) ( g( (x),(y), ( f((x),(y)) ) ) ) template <class T> size_t f(const T& a, const T& b) { size_t len=0; len = (ARRAY_SIZE(a)); if (len != ARRAY_SIZE(b)) { puts("can not define inner product of these vectors"); return -1; } else return len; } float g(const float a[], const float b[], size_t len) { if (len == -1) return 0; float ip(0); for (size_t i = 0; i <len; ++i) ip += a[i]*b[i]; return ip; } int main (void){ float v1[3]={1.3f,0,1}; float v2[3]={2,3,4}; printf("out of function: %d,%d\n", sizeof(v1), sizeof(v1[0])); printf("%f\n", INNER_PRODUCT(v1,v2) ) ; return 0; }
|

|