MySQL- Руководство разработчика

Sql_create_basic со сравнением


Вы можете также сделать структуру сравнимой, заменяя первый 0 в предыдущем примере на ненулевое значение. Это число сообщает, что если первые n чисел одинаковые, то и две структуры совпадают: sql_create_basic_5(stock, 1, 0, string, item, int, num, double, weight, double, price, MysqlDate, date) Создаст структуру, где только первый элемент будет проверен, чтобы увидеть являются ли две различных структуры действительно различными. Это также позволяет Вам сравнивать одну структуру с другой основываясь на значении элемента. Если n больше одного, это сравнит структуры в лексикографическом порядке. Например, если n=2, это сначала сравнило бы элемент item, и если он был тот же самый, затем будет сравниваться num. Если num был тот же самый, это объявит две структуры идентичными. struct stock ( ... stock (const string &p1); set (const string &p1); bool operator == (const stock &other) const; bool operator != (const stock &other) const; bool operator > (const stock &other) const; bool operator < (const stock &other) const; bool operator >= (const stock &other) const; bool operator <= (const stock &other) const; int cmp (const stock &other) const; int compare (const stock &other) const; } int compare (const stock &x, const stock &y); int compare (const stock &x, const stock &y) сравнивает x с y и возвращает значение <0, если x < y, 0 если x=y и значение >0, если x > y. stock::cmp и stock::compare действуют аналогично compare(*this, other).

stock::stock представляет собой конструктор, который установит элемент в p1 и оставит все другие переменные неопределенными. Это полезно для создания временных объектов, чтобы использовать для сравнений подобных такому: x <= stock("Hotdog")

Поскольку stock объявлена как less-then-comparable, Вы можете сохранять результаты запроса в наборе: set<stock> result; query.storein(result); Вы можете теперь использовать это подобно любому другому набору, например: cout << result.lower_bound(stock("Hamburger"))->item << endl; вернет первый элемент набора, который начинается с Hamburger.

Вы можете также теперь использовать любой STL-алгоритм который требует, чтобы все значения были less-then-comparable.

Общий формат таков: sql_create_base_#(NAME, CMP, 0, TYPE1, ITEM1, ... TYPE#, ITEM#)

Здесь CMP сообщает, что если первые cmp переменных являются теми же самыми, то две структуры одинаковы.



Содержание раздела