我有一个结构的2个矢量,例如A。
如果将它们视为矩阵A,则两个矩阵中的行数将相同,但每行的长度不同,因此它不是理想的矩阵。
基于计算的度量,一个向量的行被复制到另一向量。
例如:
struct A{
int a; int b;
}
std::vector<double> computeMetric(std::vector<std::vector <A>> v){
std::vector<double> temp(v.size(), 0);
for(int i =0 to v.size()){
for(int j = 0 to v[i].size()){
temp[i] += v[i][j].a/v[i][j].b;
}
}
return temp
}
int main(){
std::vector<std::vector <A>> v1;
std::vector<std::vector <A>> v2;
std::vector<double> metricV1 = computeMetric(v1); // size() = V1.size() = v2.size()
std::vector<double> metricV2 = computeMetric(v2); // size() = V1.size() = v2.size()
for (i = 0 to metricv1.size()){
if(metricv1[i] > metricv2[i])
v1[i] = v2[i];
}
return 0;
}
但是v1[i] = v2[i];
不正确,因此我使用了erase()
和insert()
。
结果将是预期的,这是更有效的方法吗?
研究了c ++文档中的参考文献后,您可以找到here
您可以使用std::vector::swap().
,这是交换两个向量的最有效方法这是交换的示例
// CPP program to illustrate swapping
// of two vectors using std::vector::swap()
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<int> v1 = {1, 2, 3};
vector<int> v2 = {4, 5, 6};
// swapping the above two vectors
// using std::vector::swap
v1.swap(v2);
// print vector v1
cout<<"Vector v1 = ";
for(int i=0; i<3; i++)
{
cout<<v1[i]<<" ";
}
// print vector v2
cout<<"\nVector v2 = ";
for(int i=0; i<3; i++)
{
cout<<v2[i]<<" ";
}
return 0;
}
因此使用std::swap()
是在两个向量的向量之间交换向量的最有效方法