bool OBStereo::ContainsSameRefs(const OBStereo::Refs &refs1, const OBStereo::Refs &refs2) { if (refs1.size() != refs2.size()) return false; int count = 0; for (ConstRefIter i = refs1.begin(); i != refs1.end(); ++i) for (ConstRefIter j = refs2.begin(); j != refs2.end(); ++j) if (*i == *j) { count++; break; } return (count == refs1.size()); }
bool OBStereo::ContainsRef(const OBStereo::Refs &refs, unsigned long id) { for (ConstRefIter i = refs.begin(); i != refs.end(); ++i) if (*i == id) return true; return false; }
int OBStereo::NumInversions(const OBStereo::Refs &refs) { OBStereo::Refs invVec; // the inversion vector OBStereo::ConstRefIter i, j; for (i = refs.begin(); i != refs.end(); ++i) { int e = 0; // ith element // loop over elements to the right for (j = i; j != refs.end(); ++j) // increment e if element to the right is lower if (*j < *i) e++; invVec.push_back(e); } int sum = 0; for (OBStereo::RefIter k = invVec.begin(); k != invVec.end(); ++k) sum += *k; return sum; }