Я наткнулся на некоторый код, который имеет вложенные циклы: есть список файлов измерений, содержащий список измерений. Каждые измерения необходимо сравнить со списком контрольных измерений, чтобы выполнить некоторые проверки.
Вот краткий пример.
class Measurement {
public:
bool operator==(const Measurement& other) { return isEqual(other); }
private:
bool isEqual(const Measurement& other) const;
/* some private fields */
};
class MeasurementFile
{
public:
std::vector<Measurement> measurements;
};
int main()
{
std::vector<Measurement> referenceMeasurements = createReferenceMeasurements();
std::vector<MeasurementFile> files = createMeasurementFiles();
for (auto & singleFile : files) {
for (auto & singleMeasurement : singleFile.measurements) {
for (auto & reference : referenceMeasurements) {
if (reference == singleMeasurement) {
doSomething(singleMeasurement);
}
}
}
}
return 0;
}
Основное также можно записать так:
int main()
{
std::vector<Measurement> referenceMeasurements = createReferenceMeasurements();
std::vector<MeasurementFile> files = createMeasurementFiles();
for (auto & reference: referenceMeasurements) {
for (auto & singleFile : files) {
for (auto & singleMeasurement : singleFile.measurements) {
if (reference == singleMeasurement) {
doSomething(singleMeasurement);
}
}
}
}
return 0;
}
Итак, мой вопрос: между двумя вышеупомянутыми решениями, которое является лучшим (если оно есть)? Это только вопрос предпочтений?