mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-29 16:40:38 +08:00
Flesh out OrderedGroups.
1. Add the ability to bulk remove elements. 2. Add accessor for elements_to_group. 3. Early exit in Remove if there are no elements. Change-Id: I3df1f00de05338a42e9907423b674469a022d3bc
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
#include "ceres/internal/port.h"
|
||||
|
||||
namespace ceres {
|
||||
@@ -103,6 +104,20 @@ class OrderedGroups {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Bulk remove elements. The return value indicates the number of
|
||||
// elements successfully removed.
|
||||
int Remove(const vector<T>& elements) {
|
||||
if (NumElements() == 0 || elements.size() == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int num_removed = 0;
|
||||
for (int i = 0; i < elements.size(); ++i) {
|
||||
num_removed += Remove(elements[i]);
|
||||
}
|
||||
return num_removed;
|
||||
}
|
||||
|
||||
// Reverse the order of the groups in place.
|
||||
void Reverse() {
|
||||
typename map<int, set<T> >::reverse_iterator it =
|
||||
@@ -160,6 +175,10 @@ class OrderedGroups {
|
||||
return group_to_elements_;
|
||||
}
|
||||
|
||||
const map<T, int>& element_to_group() const {
|
||||
return element_to_group_;
|
||||
}
|
||||
|
||||
private:
|
||||
map<int, set<T> > group_to_elements_;
|
||||
map<T, int> element_to_group_;
|
||||
|
||||
Reference in New Issue
Block a user