C ++在两个向量之间交换一个向量

问题描述 投票:0回答:1

我有一个结构的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++ vector std swap
1个回答
0
投票

研究了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()是在两个向量的向量之间交换向量的最有效方法

© www.soinside.com 2019 - 2024. All rights reserved.