C++ 在C+中相应地乘以向量元素+;

C++ 在C+中相应地乘以向量元素+;,c++,C++,所以我有两个向量: vector<int> v1(size); vector<int> v2(size); 然而,这将返回5 54-21,从v1[1]*v2[1]、v1[2]*v2[2]和v1[3]*v2[3]开始,我想将它们彼此相减:5-54-21首先,在您的公式中,必须添加第一个乘积(IOW为正数),然后减去剩余的乘积。所以你必须区别对待这两种情况 其次,您可以通过从零开始计算正在进行的结果来轻松执行计算: int result = 0; if (size >

所以我有两个向量:

vector<int> v1(size);
vector<int> v2(size);

然而,这将返回
5 54-21
,从
v1[1]*v2[1]、v1[2]*v2[2]和v1[3]*v2[3]
开始,我想将它们彼此相减:
5-54-21
首先,在您的公式中,必须添加第一个乘积(IOW为正数),然后减去剩余的乘积。所以你必须区别对待这两种情况

其次,您可以通过从零开始计算正在进行的结果来轻松执行计算:

int result = 0;
if (size >= 1) {
    result += v1[0]*v2[0];
    for (int i = 1; i < size; ++i)
        result -= v1[i]*v2[i];
}
std::cout << result << std::endl;
int结果=0;
如果(大小>=1){
结果+=v1[0]*v2[0];
对于(int i=1;istd::cout首先,在您的公式中,必须添加第一个乘积(IOW为正),而减去剩余的乘积。所以你必须区别对待这两种情况

其次,您可以通过从零开始计算正在进行的结果来轻松执行计算:

int result = 0;
if (size >= 1) {
    result += v1[0]*v2[0];
    for (int i = 1; i < size; ++i)
        result -= v1[i]*v2[i];
}
std::cout << result << std::endl;
int结果=0;
如果(大小>=1){
结果+=v1[0]*v2[0];
对于(int i=1;istd::cout首先,在您的公式中,必须添加第一个乘积(IOW为正),而减去剩余的乘积。所以你必须区别对待这两种情况

其次,您可以通过从零开始计算正在进行的结果来轻松执行计算:

int result = 0;
if (size >= 1) {
    result += v1[0]*v2[0];
    for (int i = 1; i < size; ++i)
        result -= v1[i]*v2[i];
}
std::cout << result << std::endl;
int结果=0;
如果(大小>=1){
结果+=v1[0]*v2[0];
对于(int i=1;istd::cout首先,在您的公式中,必须添加第一个乘积(IOW为正),而减去剩余的乘积。所以你必须区别对待这两种情况

其次,您可以通过从零开始计算正在进行的结果来轻松执行计算:

int result = 0;
if (size >= 1) {
    result += v1[0]*v2[0];
    for (int i = 1; i < size; ++i)
        result -= v1[i]*v2[i];
}
std::cout << result << std::endl;
int结果=0;
如果(大小>=1){
结果+=v1[0]*v2[0];
对于(int i=1;i
vector<int> v1{2,5,9,3};
vector<int> v2{4,1,6,7};

int result = std::inner_product(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::minus<>,std::multiplies<>);
向量v1{2,5,9,3};
向量v2{4,1,6,7};
int result=std::inner_乘积(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::减号,std::乘法);
(使用C++14)

int result=std::inner_乘积(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::减号,std::乘法);
(使用C++98)

那怎么办

vector<int> v1{2,5,9,3};
vector<int> v2{4,1,6,7};

int result = std::inner_product(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::minus<>,std::multiplies<>);
向量v1{2,5,9,3};
向量v2{4,1,6,7};
int result=std::inner_乘积(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::减号,std::乘法);
(使用C++14)

int result=std::inner_乘积(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::减号,std::乘法);
(使用C++98)

那怎么办

vector<int> v1{2,5,9,3};
vector<int> v2{4,1,6,7};

int result = std::inner_product(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::minus<>,std::multiplies<>);
向量v1{2,5,9,3};
向量v2{4,1,6,7};
int result=std::inner_乘积(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::减号,std::乘法);
(使用C++14)

int result=std::inner_乘积(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::减号,std::乘法);
(使用C++98)

那怎么办

vector<int> v1{2,5,9,3};
vector<int> v2{4,1,6,7};

int result = std::inner_product(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::minus<>,std::multiplies<>);
向量v1{2,5,9,3};
向量v2{4,1,6,7};
int result=std::inner_乘积(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::减号,std::乘法);
(使用C++14)

int result=std::inner_乘积(++v1.beginn(),v1.end(),++v2.begin(),v1[0]*v2[0],std::减号,std::乘法);


(使用C++98)

打印
-
而不是空格?@saadtaame,这将生成一个字符串
5-54-21-
向量v2{4,1,6,7}
for(auto p:product)我以前可以试过吗,但我最终得到了这样一个结果:
在C++98中'v1'必须由构造函数初始化,而不是由{…}
初始化仍然在98上,是的..打印
-
而不是空格?@saadtame,这将产生一个字符串
5-54-21-
向量v2{4,1,6,7}
for(auto p:product)我以前可以试过吗,但我最终得到了这样一个结果:
在C++98中'v1'必须由构造函数初始化,而不是由{…}
初始化仍然在98上,是的..打印
-
而不是空格?@saadtame,这将产生一个字符串
5-54-21-
向量v2{4,1,6,7}
for(auto p:product)我以前可以试过吗,但我最终得到了这样一个结果:
在C++98中'v1'必须由构造函数初始化,而不是由{…}
初始化仍然在98上,是的..打印
-
而不是空格?@saadtame,这将产生一个字符串
5-54-21-
向量v2{4,1,6,7}
for(auto p:product)我以前可以试试吗,但我最终得到了这样一个结论:
在C++98中,“v1”必须由构造函数初始化,而不是由“{…}”|
仍然在98上,是的..我完全错过了这一点。将尽快接受,谢谢你的时间:)我完全错过了。将尽快接受,谢谢你的时间:)我完全错过了。将尽快接受,谢谢你的时间:)我完全错过了。将尽快接受,谢谢您的时间:)