⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graph.cct

📁 TGFF省城程序
💻 CCT
字号:
// Copyright 2000 by Robert Dick.// All rights reserved./*###########################################################################*/inline RawGraph::vertex_index RawGraph::size_vertex() const {	return vertex_.size();}/*===========================================================================*/inline RawGraph::edge_index RawGraph::size_edge() const {	return edge_.size();}/*===========================================================================*/inline RawGraph::vertex_indexRawGraph::vertex_offset(const_vertex_iterator x) const {	return x - vertex_.begin();}/*===========================================================================*/inline RawGraph::edge_indexRawGraph::edge_offset(const_edge_iterator x) const {	return x - edge_.begin();}/*===========================================================================*/inline RawGraph::vertex_indexRawGraph::vertex_offset(const_reverse_vertex_iterator x) const {	return vertex_.rend() - x - 1;}/*===========================================================================*/inline RawGraph::edge_indexRawGraph::edge_offset(const_reverse_edge_iterator x) const {	return edge_.rend() - x - 1;}/*===========================================================================*/inline RawGraph::const_reverse_vertex_iteratorRawGraph::vertex_rbegin() const {	return vertex_.rbegin();}/*===========================================================================*/inline RawGraph::vertex_iteratorRawGraph::vertex(const vertex_index i) {	return vertex_.begin() + i;}/*===========================================================================*/inline RawGraph::const_vertex_iteratorRawGraph::vertex(const vertex_index i) const {	return runconst(*this).vertex(i);}/*===========================================================================*/inline RawGraph::edge_iteratorRawGraph::edge(const edge_index i) {	return edge_.begin() + i;}/*===========================================================================*/inline RawGraph::const_edge_iteratorRawGraph::edge(const edge_index i) const {	return runconst(*this).edge(i);}/*===========================================================================*/inline RawGraph::edge_type::edge_type(const vertex_index from_i,const vertex_index to_i) :	from_(from_i),	to_(to_i){}/*###########################################################################*/inline RawGraph::vertex_indexRawGraph::vertex_index::operator++(int) {	vertex_index tmp(*this);	++index_;	return tmp;}/*===========================================================================*/inline RawGraph::vertex_indexRawGraph::vertex_index::operator--(int) {	vertex_index tmp(*this);	--index_;	return tmp;}/*===========================================================================*/inline RawGraph::vertex_indexRawGraph::vertex_index::operator+=(const vertex_index i) {	index_ += i.index_;	return *this;}/*===========================================================================*/inline RawGraph::vertex_indexRawGraph::vertex_index::operator-=(const vertex_index i) {	index_ -= i.index_;	return *this;}/*===========================================================================*/inline RawGraph::vertex_indexoperator+(const RawGraph::vertex_index a,const RawGraph::vertex_index b) {	return RawGraph::vertex_index(a) += b;}/*===========================================================================*/inline RawGraph::vertex_indexoperator-(const RawGraph::vertex_index a,const RawGraph::vertex_index b) {	return RawGraph::vertex_index(a) -= b;}/*###########################################################################*/inline RawGraph::edge_indexRawGraph::edge_index::operator++(int) {	edge_index tmp(*this);	++index_;	return tmp;}/*===========================================================================*/inline RawGraph::edge_indexRawGraph::edge_index::operator--(int) {	edge_index tmp(*this);	--index_;	return tmp;}/*===========================================================================*/inline RawGraph::edge_indexRawGraph::edge_index::operator+=(const edge_index i) {	index_ += i.index_;	return *this;}/*===========================================================================*/inline RawGraph::edge_indexRawGraph::edge_index::operator-=(const edge_index i) {	index_ -= i.index_;	return *this;}/*===========================================================================*/inline RawGraph::edge_indexoperator+(const RawGraph::edge_index & a,const RawGraph::edge_index & b) {	return RawGraph::edge_index(a) += b;}/*===========================================================================*/inline RawGraph::edge_indexoperator-(const RawGraph::edge_index & a,const RawGraph::edge_index & b) {	return RawGraph::edge_index(a) -= b;}/*###########################################################################*/template <typename V, typename E>typename Graph<V, E>::vertex_indexGraph<V, E>::add_vertex(const V & data) {	v_data_.push_back(data);	return super::add_vertex();}/*===========================================================================*/template <typename V, typename E>typename Graph<V, E>::edge_indexGraph<V, E>::add_edge(vertex_index from, vertex_index to,const E & data) {	e_data_.push_back(data);	return super::add_edge(from, to);}/*===========================================================================*/template <typename V, typename E>void Graph<V, E>::erase_vertex(const vertex_index i) {	super::erase_vertex(i);	v_data_.erase(v_data_.begin() + i);}/*===========================================================================*/template <typename V, typename E>void Graph<V, E>::erase_edge(const edge_index i) {	super::erase_edge(i);	e_data_.erase(e_data_.begin() + i);}/*===========================================================================*/template <typename V, typename E>void Graph<V, E>::pack_memory() {	super::pack_memory();	RVector<V> v_data(v_data_);	RVector<E> e_data(e_data_);	v_data_.rswap(v_data);	e_data_.rswap(e_data);}/*===========================================================================*/template<typename V, typename E>void Graph<V, E>::clear() {	super::clear();	v_data_.clear();	e_data_.clear();}/*===========================================================================*/template <typename V, typename E>void Graph<V, E>::rswap(RawGraph & g) {	super::rswap(g);// This checks to make sure they're the same type.		if (Graph * gg = dynamic_cast<Graph *>(&g)) {		v_data_.rswap(gg->v_data_);		e_data_.rswap(gg->e_data_);	}}/*===========================================================================*/template <typename V, typename E>void Graph<V, E>::self_check_deep() const {	self_check();	v_data_.self_check_deep();	v_data_.self_check_deep();}/*###########################################################################*/template <typename V, typename E>void Graph<V, E>::print_to_default(std::ostream & os) const {	super::print_to(os);	MAP(x, v_data_.size()) {		os << "vertex " << x << " data:\n" << v_data_[x] << "\n";	}	MAP(x, e_data_.size()) {		os << "edge " << x << " data:\n" << e_data_[x] << "\n";	}}/*===========================================================================*/template <typename V, typename E>void Graph<V, E>::print_to_vcg(std::ostream & os, const std::string & glab)const {	os << "graph: { label: \"" << glab <<		"\"\n\tdisplay_edge_labels: yes\n\n";	MAP(v, size_vertex()) {		os << "\tnode: { title: \"" << v << "\" label: \"";		print_if_possible(os, (*this)[v], "");		os << "\" ";		const_vertex_iterator vi = vertex(v);		if (! vi->size_in()) {			os << "color: lightgreen";		} else if (! vi->size_out()) {			os << "color: lightred";		} else {			os << "color: white";		}		os << " }\n";	}	os << "\n";	MAP(e, size_edge()) {		os << "\tedge: { thickness: 2 sourcename: \"";		print_if_possible(os, (*this)[edge(e)->from()], edge(e)->from());		os << "\" targetname: \"";		print_if_possible(os, (*this)[edge(e)->to()], edge(e)->to());		os << "\" " << "label: \"";		print_if_possible(os, (*this)(e), e);		os << "\" } \n";	}	os << "}\n";}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -