int main(void) { // STL template 利用范型减少了因类型不同而重复的代码 // 但是实际内存中存储的任然是 code bloat cout << square<int>(5) << endl; cout << square<double>(5.5) << endl; BoVector<int> bv; bv.push(1); bv.push(3); bv.push(1); bv.push(4); bv.print(); bv = square< BoVector<int> >(bv); bv.print(); return 0; }
BoVector<T> operator* (const BoVector<T>& bv1, const BoVector<T>& bv2) { // 相乘的两个BoVector需要大小相同 BoVector<T> rv; for (int i=0; i<bv1.getsize(); i++) { rv.push(bv1.get(i)*bv2.get(i)); // 类型必须支持*操作 } return rv; }
int main(int argc, const char * argv[]) { cout << square<int>(5) << endl; cout << square<double>(5.5) << endl; BoVector<int> bv; bv.push(1); bv.push(2); bv.push(3); bv.push(4); bv.print_Vector(); //square bv tries to square the vector by passing it as an argument //we overloaded the * operator for bv vector multiplication bv = square(bv); bv.print_Vector(); return 0; }