【发布时间】:2020-01-23 22:03:11
【问题描述】:
我有 2 个向量的结构体,比如 A。
如果将它们视为矩阵A,则两个矩阵中的行数相同,但每行的长度不同,因此不是完美矩阵。
基于计算的度量,将一个向量的行复制到另一个向量。
例如:
#include <vector>
struct A {
int a;
int b;
};
std::vector<double> computeMetric(std::vector<std::vector<A>> v) {
std::vector<double> temp(v.size(), 0);
for (size_t i = 0; i < v.size(); i++) {
for (size_t j = 0; j < v[i].size(); j++) {
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 (size_t i = 0; i < metricV1.size(); i++) {
if (metricV1[i] > metricV2[i])
v1[i] = v2[i];
}
return 0;
}
但是v1[i] = v2[i]; 不正确,所以我使用了erase() 和insert()。
结果会是预期的吗?这是更有效的方法吗?
【问题讨论】:
-
if(metricv1.[i] > metricv2.[i])无法编译。请解释一下“but v1[i] = v2[i];不正确”是什么意思