우선 QList
을 사용하면 안되며 QVector
인 경우가 많으므로 대부분 efficient입니다. QList
이 필요한 경우가 아니라면 Qt API와의 인터페이스가 필요하기 때문입니다. 그럼에도 불구하고 QVector::toList
이 아마도 더 나을 것입니다.
QVector<Data> data{{"F1", "Id1", "Pass"}, //or QList<Data> if you really insist...
{"F1", "Id1", "Pass"},
{"F1", "Id1", "Pass"},
{"F1", "Id2", "Fail"},
{"F1", "Id2", "Fail"},
{"F3", "Id3", "Pass"},
{"F3", "Id3", "Pass"},
{"F2", "Id4", "Pass"},
{"F2", "Id4", "Pass"}};
qDebug() << std::count_if(data.cbegin(),
data.cend(),
[](const Data &data) { return data.Feature == "F1" && data.Result == "Pass"; });
인쇄 3.
는 C++ 람다 11 만 count_if
필요 자체가되지 않습니다
이 문제에 관해서는, 그것은뿐만 아니라 C++에서 한 줄이 될 수 있습니다.
는 여전히 한 줄이 될 수있는 조건을 만족하는 모든 고유 ID를 나열하려면하지만 혼란스러워하기 시작 :
QVector<Data> result;
std::copy_if(data.cbegin(),
data.cend(),
std::back_inserter(result),
[&result](const Data &data)
{
return std::find_if(result.cbegin(), result.cend(), [&data](const Data &d) { return d.Id == data.Id; }) == result.cend()
&& data.Feature == "F1"
&& data.Result == "Pass";
});
qDebug() << result.count();
당신이 기준과 일치 또는 "ID"값의 개수가 필요하십니까 각 ID가 경기에서 얼마나 자주 발생했는지 계산? 즉, 출력은'1' (Id1만이 기준과 일치 함)이거나'[Id1 -> 3]'과 같은지도가 필요합니까 (Id1은 기준에 3 번 일치합니다). –