Loading [MathJax]/extensions/tex2jax.js

Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
tuples.h
Go to the documentation of this file.
1
33#pragma once
34
35#include <ogdf/basic/Hashing.h>
36#include <ogdf/basic/basic.h>
37
38namespace ogdf {
39
41
45template<class E1, class E2>
46class Tuple2 {
47public:
48 E1 m_x1;
49 E2 m_x2;
50
52 Tuple2() { }
53
55 Tuple2(const E1& y1, const E2& y2) : m_x1(y1), m_x2(y2) { }
56
58 Tuple2(const Tuple2<E1, E2>& t2) : m_x1(t2.m_x1), m_x2(t2.m_x2) { }
59
61 const E1& x1() const { return m_x1; }
62
64 const E2& x2() const { return m_x2; }
65
67 E1& x1() { return m_x1; }
68
70 E2& x2() { return m_x2; }
71
72 // default assignment operator
73 Tuple2& operator=(const Tuple2<E1, E2>&) = default;
74
76};
77
79template<class E1, class E2>
80bool operator==(const Tuple2<E1, E2>& t1, const Tuple2<E1, E2>& t2) {
81 return t1.x1() == t2.x1() && t1.x2() == t2.x2();
82}
83
85template<class E1, class E2>
86bool operator!=(const Tuple2<E1, E2>& t1, const Tuple2<E1, E2>& t2) {
87 return t1.x1() != t2.x1() || t1.x2() != t2.x2();
88}
89
91template<class E1, class E2>
92std::ostream& operator<<(std::ostream& os, const Tuple2<E1, E2>& t2) {
93 os << "(" << t2.x1() << " " << t2.x2() << ")";
94 return os;
95}
96
97template<typename K1_, typename K2_, typename Hash1_ = DefHashFunc<K1_>, typename Hash2_ = DefHashFunc<K2_>>
99public:
101
103
104 size_t hash(const Tuple2<K1_, K2_>& key) const {
105 return 23 * m_hash1.hash(key.x1()) + 443 * m_hash2.hash(key.x2());
106 }
107
108private:
111};
112
113}
Declaration of classes used for hashing.
Basic declarations, included by all source files.
HashFuncTuple(const Hash1_ &hash1, const Hash2_ &hash2)
Definition tuples.h:102
size_t hash(const Tuple2< K1_, K2_ > &key) const
Definition tuples.h:104
Tuples of two elements (2-tuples).
Definition tuples.h:46
Tuple2 & operator=(const Tuple2< E1, E2 > &)=default
Tuple2(const E1 &y1, const E2 &y2)
Constructs a 2-tuple for given values.
Definition tuples.h:55
const E1 & x1() const
Returns a reference the first element.
Definition tuples.h:61
const E2 & x2() const
Returns a reference the second element.
Definition tuples.h:64
E1 & x1()
Returns a reference the first element.
Definition tuples.h:67
Tuple2(const Tuple2< E1, E2 > &t2)
Constructs a 2-tuple that is a copy of t2.
Definition tuples.h:58
E2 m_x2
The second element.
Definition tuples.h:49
Tuple2()
Constructs a 2-tuple using default constructors.
Definition tuples.h:52
E2 & x2()
Returns a reference the second element.
Definition tuples.h:70
E1 m_x1
The first element.
Definition tuples.h:48
#define OGDF_NEW_DELETE
Makes the class use OGDF's memory allocator.
Definition memory.h:84
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.
std::ostream & operator<<(std::ostream &os, const ogdf::Array< E, INDEX > &a)
Prints array a to output stream os.
Definition Array.h:978
bool operator!=(const Tuple2< E1, E2 > &t1, const Tuple2< E1, E2 > &t2)
Inequality operator for 2-tuples.
Definition tuples.h:86
bool operator==(const Tuple2< E1, E2 > &t1, const Tuple2< E1, E2 > &t2)
Equality operator for 2-tuples.
Definition tuples.h:80