16 typedef std::vector<int> BaseT;
17 typedef std::vector<int>::const_iterator const_iterator;
18 typedef std::vector<int>::iterator iterator;
21 inline explicit IntTuple(
int e1):elements(1,e1) {}
22 inline explicit IntTuple(
int e1,
int e2) {
set(e1,e2); }
23 inline explicit IntTuple(
int e1,
int e2,
int e3) {
set(e1,e2,e3); }
24 inline explicit IntTuple(
const std::vector<int>& t):elements(t) {}
25 inline size_t size()
const {
return elements.size(); }
26 inline bool empty()
const {
return elements.empty(); }
27 inline void resize(
size_t s) { elements.resize(s); }
28 inline void resize(
size_t s,
int fillVal) { elements.resize(s,fillVal); }
29 inline int operator[](
int i)
const {
return elements[i]; }
30 inline int& operator[](
int i) {
return elements[i]; }
31 inline operator BaseT& () {
return elements; }
32 inline operator const BaseT& ()
const {
return elements; }
33 inline iterator begin() {
return elements.begin(); }
34 inline const_iterator begin()
const {
return elements.begin(); }
35 inline iterator end() {
return elements.end(); }
36 inline const_iterator end()
const {
return elements.end(); }
37 inline bool operator < (
const IntTuple& t)
const {
return std::lexicographical_compare(begin(),end(),t.begin(),t.end()); }
38 inline bool operator == (
const IntTuple& t)
const {
return elements == t.elements; }
39 inline void fill(
int val) { std::fill(elements.begin(),elements.end(),val); }
40 inline void set(
int e1) { elements.resize(1); elements[0]=e1; }
41 inline void set(
int e1,
int e2) { elements.resize(2); elements[0]=e1; elements[1]=e2; }
42 inline void set(
int e1,
int e2,
int e3) { elements.resize(3); elements[0]=e1; elements[1]=e2; elements[2]=e3; }
43 inline int getIndex(
int x)
const {
44 for(
size_t i=0;i<elements.size();i++)
if(x==elements[i])
return (
int)i;
47 inline bool contains(
int x,
int& index)
const {
51 inline bool contains(
int x)
const {
52 int index=getIndex(x);
55 inline int count(
int x)
const {
57 for(
size_t i=0;i<elements.size();i++)
if(x==elements[i]) n++;
60 inline void operator += (
int ofs) {
for(
size_t i=0;i<elements.size();i++) elements[i]+=ofs; }
61 inline void operator -= (
int ofs) {
for(
size_t i=0;i<elements.size();i++) elements[i]-=ofs; }
63 std::vector<int> elements;
An integer tuple class.
Definition: IntTuple.h:14