23 #ifndef SRC_SIMPLEX_TREE_INCLUDE_GUDHI_SIMPLEX_TREE_SIMPLEX_TREE_SIBLINGS_H_
24 #define SRC_SIMPLEX_TREE_INCLUDE_GUDHI_SIMPLEX_TREE_SIMPLEX_TREE_SIBLINGS_H_
26 #include "boost/container/flat_map.hpp"
27 #include "Simplex_tree_node_explicit_storage.h"
41 template<
class SimplexTree,
class MapContainer>
42 class Simplex_tree_siblings {
46 template<
class T>
friend class Simplex_tree_simplex_vertex_iterator;
47 template<
class T>
friend class Simplex_tree_boundary_simplex_iterator;
48 template<
class T>
friend class Simplex_tree_complex_simplex_iterator;
49 template<
class T>
friend class Simplex_tree_skeleton_simplex_iterator;
51 typedef typename SimplexTree::Vertex_handle Vertex_handle;
52 typedef typename SimplexTree::Filtration_value Filtration_value;
53 typedef typename SimplexTree::Node Node;
54 typedef MapContainer Dictionary;
55 typedef typename MapContainer::iterator Dictionary_it;
58 Simplex_tree_siblings()
65 Simplex_tree_siblings(Simplex_tree_siblings * oncles, Vertex_handle parent)
74 Simplex_tree_siblings(Simplex_tree_siblings * oncles, Vertex_handle parent,
75 const std::vector<std::pair<Vertex_handle, Node> > & members)
78 members_(boost::container::ordered_unique_range, members.begin(),
80 for (
auto map_it = members_.begin(); map_it != members_.end(); map_it++) {
81 map_it->second.assign_children(
this);
92 void insert(Vertex_handle v, Filtration_value filtration_value) {
93 typename Dictionary::iterator sh = members_.find(v);
94 if (sh != members_.end() && sh->second.filtration() > filtration_value) {
95 sh->second.assign_filtration(filtration_value);
98 if (sh == members_.end()) {
100 std::pair<Vertex_handle, Node>(v, Node(
this, filtration_value)));
105 typename Dictionary::iterator find(Vertex_handle v) {
106 return members_.find(v);
109 Simplex_tree_siblings * oncles() {
113 Vertex_handle parent() {
117 Dictionary & members() {
122 return members_.size();
125 Simplex_tree_siblings * oncles_;
126 Vertex_handle parent_;
133 #endif // SRC_SIMPLEX_TREE_INCLUDE_GUDHI_SIMPLEX_TREE_SIMPLEX_TREE_SIBLINGS_H_