У меня есть 2 вектора вектора для структуры, скажем, A.
Если вы рассматриваете их как матрицу A, число строк в обеих матрицах будет одинаковым, но каждая строка имеет разную длину, поэтому это не идеальная матрица.
На основе вычисленного показателя c строка одного вектора копируется в другой.
Например:
#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()
.
Будут ли результаты ожидаемыми, и это более эффективный способ сделать это?