Skip to content
Snippets Groups Projects
Commit ed9d534e authored by Julien Michel's avatar Julien Michel
Browse files

STY: Small ComputeConfusionMarix clean-ups (kindly provided by Laurentiu Nicola)

The "count-insert" idiom is an antipattern that leads to searching the
element twice. Avoid that and also the 0 comparison a bit below.

In addition, cache the end iterators of the two maps. This is safe as
the iterators stay valid when the map is modified.
parent 5e896062
No related branches found
No related tags found
No related merge requests found
......@@ -288,27 +288,17 @@ private:
if ((labelRef != nodata) && (labelProd != nodata))
{
// If the current labels have not been added to their respective mapOfClasses yet
if (mapOfClassesRef.count(labelRef) == 0)
if (mapOfClassesRef.insert(MapOfClassesType::value_type(labelRef, itLabelRef)).second)
{
mapOfClassesRef[labelRef] = itLabelRef;
++itLabelRef;
}
if (mapOfClassesProd.count(labelProd) == 0)
if (mapOfClassesProd.insert(MapOfClassesType::value_type(labelProd, itLabelProd)).second)
{
mapOfClassesProd[labelProd] = itLabelProd;
++itLabelProd;
}
// Filling of m_Matrix
if (m_Matrix[labelRef][labelProd] == 0)
{
m_Matrix[labelRef][labelProd] = 1;
}
else
{
m_Matrix[labelRef][labelProd]++;
}
m_Matrix[labelRef][labelProd]++;
} // END if ((labelRef != nodata) && (labelProd != nodata))
++itRef;
++itInput;
......@@ -325,9 +315,11 @@ private:
// Filling ossHeaderRefLabels for the output file
ossHeaderRefLabels << commentRefStr;
MapOfClassesType::iterator itMapOfClassesRefEnd = mapOfClassesRef.end();
itMapOfClassesRef = mapOfClassesRef.begin();
int indexLabelRef = 0;
while (itMapOfClassesRef != mapOfClassesRef.end())
while (itMapOfClassesRef != itMapOfClassesRefEnd)
{
// labels labelRef of mapOfClassesRef are already sorted
labelRef = itMapOfClassesRef->first;
......@@ -338,7 +330,7 @@ private:
ossHeaderRefLabels << labelRef;
++itMapOfClassesRef;
if (itMapOfClassesRef != mapOfClassesRef.end())
if (itMapOfClassesRef != itMapOfClassesRefEnd)
{
ossHeaderRefLabels << separatorChar;
}
......@@ -352,9 +344,10 @@ private:
// Filling ossHeaderProdLabels for the output file
ossHeaderProdLabels << commentProdStr;
MapOfClassesType::iterator itMapOfClassesProdEnd = mapOfClassesProd.end();
itMapOfClassesProd = mapOfClassesProd.begin();
int indexLabelProd = 0;
while (itMapOfClassesProd != mapOfClassesProd.end())
while (itMapOfClassesProd != itMapOfClassesProdEnd)
{
// labels labelProd of mapOfClassesProd are already sorted
labelProd = itMapOfClassesProd->first;
......@@ -365,7 +358,7 @@ private:
ossHeaderProdLabels << labelProd;
++itMapOfClassesProd;
if (itMapOfClassesProd != mapOfClassesProd.end())
if (itMapOfClassesProd != itMapOfClassesProdEnd)
{
ossHeaderProdLabels << separatorChar;
}
......@@ -402,13 +395,13 @@ private:
// Initialization of m_MatrixLOG
m_MatrixLOG.SetSize(nbClassesRef, nbClassesRef);
m_MatrixLOG.Fill(0);
for (itMapOfClassesRef = mapOfClassesRef.begin(); itMapOfClassesRef != mapOfClassesRef.end(); ++itMapOfClassesRef)
for (itMapOfClassesRef = mapOfClassesRef.begin(); itMapOfClassesRef != itMapOfClassesRefEnd; ++itMapOfClassesRef)
{
// labels labelRef of mapOfClassesRef are already sorted
labelRef = itMapOfClassesRef->first;
indexLabelProd = 0;
for (itMapOfClassesProd = mapOfClassesProd.begin(); itMapOfClassesProd != mapOfClassesProd.end(); ++itMapOfClassesProd)
for (itMapOfClassesProd = mapOfClassesProd.begin(); itMapOfClassesProd != itMapOfClassesProdEnd; ++itMapOfClassesProd)
{
// labels labelProd of mapOfClassesProd are already sorted
labelProd = itMapOfClassesProd->first;
......@@ -458,7 +451,7 @@ private:
confMatMeasurements->SetConfusionMatrix(m_MatrixLOG);
confMatMeasurements->Compute();
for (itMapOfClassesRef = mapOfClassesRef.begin(); itMapOfClassesRef != mapOfClassesRef.end(); ++itMapOfClassesRef)
for (itMapOfClassesRef = mapOfClassesRef.begin(); itMapOfClassesRef != itMapOfClassesRefEnd; ++itMapOfClassesRef)
{
labelRef = itMapOfClassesRef->first;
indexLabelRef = itMapOfClassesRef->second;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment