00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef QVPERMUTATION_H
00026 #define QVPERMUTATION_H
00027
00028 #include <math.h>
00029 #include <iostream>
00030 #include <QVector>
00031 #include <qvmath.h>
00032
00041 class QVPermutation: public QVector<int> {
00042 public:
00047 QVPermutation(const int n = 0, bool initialize_with_identity = false): QVector<int>(n) {
00048 if(initialize_with_identity)
00049 for(int i=0;i<n;i++)
00050 operator[](i) = i;
00051 }
00052
00056 bool checkConsistency() const;
00057
00063 QVMatrix toMatrix() const;
00064
00070 int signature() const;
00071
00080 static QVPermutation fromMatrix(const QVMatrix &matrix);
00081
00083
00087 inline int &operator()(const int index)
00088 { return operator[](index); }
00089
00093 inline int operator()(const int index) const
00094 { return operator[](index); }
00095
00096 };
00097
00101 std::ostream& operator<<( std::ostream &os, const QVPermutation &vector );
00102
00103 #endif