|
求两个向量的内积inner_product(Cpp版)
- #include <iostream>
- #include <numeric>
- #include <deque>
- using namespace std;
- void print_deque(deque<int>& d){
- for(deque<int>::iterator it=d.begin();it!=d.end();it++){
- cout << "value=" << *it << ",";
- }
- cout << endl;
- }
- //求两个向量的内积inner_product(Cpp版)
- int main(){
- deque<int> d1,d2;
- for(int i=0;i<5;i++){
- d1.push_back(i+1);
- d2.push_front(i);
- }
- d2.push_back(5);
- d2.push_back(6);
- cout << "双端数组初始值:" << endl;
- print_deque(d1);
- print_deque(d2);
-
- int inner_d1_d2 = std::inner_product(d1.begin(),d1.end(),d2.begin(), 1);
- //结果=1 + 1*4 + 2*3 + 3*2 + 4*1 + 5*0 = 21 对的
- cout<<"d1与d2的内积(1)="<<inner_d1_d2<<endl;
- inner_d1_d2 = std::inner_product(d1.begin(),d1.end(),d2.rbegin(), 2);
- //结果=2 + 1*6 + 2*5 + 3*0 + 4*1 + 5*2 = 32 对的
- cout<<"d1与d2的内积(2)="<<inner_d1_d2<<endl;
- //应用指定的二元操作,使用第一个操作代替加而第二个操作代替乘
- inner_d1_d2 = std::inner_product(d1.begin(),d1.end(),d2.begin(), 3,multiplies<int>(),plus<int>());
- //结果=3 * (1+4) * (2+3) * (3+2) * (4+1) * (5+0) = 9375 对的
- cout<<"d1与d2的内积(3)="<<inner_d1_d2<<endl;
- return 0;
- }
- /*
- 双端数组初始值:
- value=1,value=2,value=3,value=4,value=5,
- value=4,value=3,value=2,value=1,value=0,value=5,value=6,
- d1与d2的内积(1)=21
- d1与d2的内积(2)=32
- d1与d2的内积(3)=9375
- */
复制代码
|
|