alglib::graph::vertex_property< GraphType, PropertyType > Class Template Reference

#include <graph_property.h>

Public Types

typedef GraphType::vertex_type vertex_type
 
typedef PropertyType property_type
 
typedef GraphType graph_type
 

Public Member Functions

 vertex_property (const GraphType &G, const PropertyType &default_val=PropertyType())
 vertex_property constructor More...
 
 vertex_property (const vertex_property &P)=default
 
 vertex_property (vertex_property &&P)
 
PropertyType & operator[] (const vertex_type &v)
 
PropertyType operator() (const vertex_type &v) const
 
template<typename InputIter >
void bulk_update (InputIter first, InputIter last, property_type val)
 

Friends

std::ostream & operator<< (std::ostream &out, const vertex_property &P)
 

Member Typedef Documentation

template<typename GraphType, typename PropertyType>
typedef GraphType alglib::graph::vertex_property< GraphType, PropertyType >::graph_type
template<typename GraphType, typename PropertyType>
typedef PropertyType alglib::graph::vertex_property< GraphType, PropertyType >::property_type
template<typename GraphType, typename PropertyType>
typedef GraphType::vertex_type alglib::graph::vertex_property< GraphType, PropertyType >::vertex_type

Constructor & Destructor Documentation

template<typename GraphType, typename PropertyType>
alglib::graph::vertex_property< GraphType, PropertyType >::vertex_property ( const GraphType &  G,
const PropertyType &  default_val = PropertyType() 
)
inlineexplicit

vertex_property constructor

Parameters
GThe graph on which the property is to be defined
default_val(optional) Default property of each vertex
38  {
39  for(auto it = G.vbegin(); it != G.vend(); it++)
40  property[*it] = default_val;
41  }
template<typename GraphType, typename PropertyType>
alglib::graph::vertex_property< GraphType, PropertyType >::vertex_property ( const vertex_property< GraphType, PropertyType > &  P)
default
template<typename GraphType, typename PropertyType>
alglib::graph::vertex_property< GraphType, PropertyType >::vertex_property ( vertex_property< GraphType, PropertyType > &&  P)
inline
49 : property(std::move(P.property)) {}

Member Function Documentation

template<typename GraphType, typename PropertyType>
template<typename InputIter >
void alglib::graph::vertex_property< GraphType, PropertyType >::bulk_update ( InputIter  first,
InputIter  last,
property_type  val 
)
inline
74  {
75  while(first != last) {
76  property.at(*first) = val;
77  ++first;
78  }
79  }
template<typename GraphType, typename PropertyType>
PropertyType alglib::graph::vertex_property< GraphType, PropertyType >::operator() ( const vertex_type v) const
inline
63  {
64  typename std::map<vertex_type, PropertyType>::const_iterator it; // const-ness imperative
65  if((it = property.find(v)) == property.end())
66  throw std::domain_error("The vertex doesn't exist in the supplied graph");
67  return it->second;
68  }
template<typename GraphType, typename PropertyType>
PropertyType& alglib::graph::vertex_property< GraphType, PropertyType >::operator[] ( const vertex_type v)
inline
56  {
57  typename std::map<vertex_type, PropertyType>::iterator it;
58  if((it = property.find(v)) == property.end())
59  throw std::domain_error("The vertex doesn't exist in the supplied graph");
60  return it->second;
61  }

Friends And Related Function Documentation

template<typename GraphType, typename PropertyType>
std::ostream& operator<< ( std::ostream &  out,
const vertex_property< GraphType, PropertyType > &  P 
)
friend
81  {
82  for(auto it = P.property.cbegin(); it != P.property.cend(); it++)
83  out << "(" << it->first << ": " << it->second << ")\n";
84  }

The documentation for this class was generated from the following file: