C++ (Qt)bool Coord::operator < ( const Coord & c ) const{ if (x < c.x) return true; if (x > c.x) return false; return y < c.y;}
C++ (Qt)bool Coord::operator < ( const Coord & c ) const{ return x + y < c.x + c.y; // или перемножать координаты или складывать и брать корень квадратный или ... :)}
C++ (Qt)#include <iostream>#include <vector>#include <iterator>#include <algorithm> template <class InputIterator, class T>bool isContains(InputIterator begin, InputIterator end, const T& value){ if (begin == end) return (*begin == value); for (InputIterator it = begin; it != end; ++it) { if (*it == value) return true; } return (*end == value);} // my_unique - шаблонная функция которая копирует из одного контейнера в другой// только уникальные элементы//template <class InputIterator, class OutputIterator>OutputIterator my_unique(InputIterator first, InputIterator last, OutputIterator result ){ *result=*first; OutputIterator begin = result; while (++first != last) { if (!isContains(begin, result, *first)) *(++result) = *first; } return ++result;} using namespace std; int main(){ int arr[] = {0,0,1,0,2,9,3,0,0,7,4,5,6,0,7,8,9,0,0}; const int size = sizeof(arr)/sizeof(arr[0]); vector<int> v(size); vector<int>::iterator it; it = my_unique(arr, arr+size, v.begin()); v.resize(it - v.begin()); copy(v.begin(), v.end(), ostream_iterator<int>(cout," ")); return 0;}
Bash0 1 2 9 3 7 4 5 6 8
C++ (Qt)bool Coord::operator == ( const Coord & c ) const{ return x + y == c.x + c.y; }
C++ (Qt)return (*end == value);
C++ (Qt)a < b (false)b < a (false)a == b (false) Оба-на!
C++ (Qt)inline bool operator==(const Point &p1, const Point &p2){ return ((p1.xp == p2.xp) && (p1.yp == p2.yp)) ? true : false; // или так: /* return (norm(p1-p2) <= epsilon); norm = x^2+y^2 */}