Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /******************************************************************************
- СУБД имеет следующий набор операций:
- SET ключ значение
- если элемента с таким ключом нет - он добавляется
- GET ключ
- если элемент с таким ключом есть - выдается его значение, иначе - сообщение об отсутствии элемента с таким ключом
- KEYS
- распечатываются все ключи, хранящиеся в нашей БД
- Работа с СУБД происходит в цикле, выход - по команде quit.
- *******************************************************************************/
- #include <iostream>
- #include <set> // заголовочный файл множеств
- #include <iterator>
- #include <cstring>
- using namespace std;
- template<typename T>
- struct P
- {
- string key;
- T value;
- P(const string& s="",const T& v=0){key = s;value = v;}
- };
- /**
- * пергрузка сравнения для реализации множества
- */
- template <typename T>
- bool operator< (const P<T>& a,const P<T>& b){return(a.key < b.key);}
- /**
- * печать всех
- */
- template <typename T>
- void Print(const set<P<T>> &DB){
- typename set<P<T>>::const_iterator i;
- for (i=DB.begin();i!= DB.end();i++){
- cout << (*i).key << ':' << (*i).value << endl;
- }
- cout << " all " << endl;
- }
- /**
- * печать одного
- */
- template <typename T>
- void Print_elem(const set<P<T>> &DB){
- char s[10];
- cin >> s;
- cout << "ищем элемент с ключом " << s << endl;
- typename set<P<T>>::const_iterator i;
- for (i=DB.begin();i!= DB.end();i++){
- if ((*i).key == s) {
- cout << (*i).value << endl;
- return;
- }
- }
- cout << " There is no such element " << endl;
- }
- /**
- * добавление элемента
- */
- template <typename T>
- void add_elem(set<P<T>>&DB)
- // читаем с клавиатуры строку и обьект типа т который занести
- { T e; // элемент который читаем
- char s[100];
- cin >> s >> e;
- //проверка что элемент присутствует
- typename set<P<T>>::const_iterator i;
- for (i=DB.begin();i!= DB.end();i++)
- while (s == " "){i++; if (s == "\n") cout << "bad command" << endl; }///////////////////////////////
- if ((*i).key == s ){
- cout << " Already in " << endl;
- return;
- }
- DB.insert(P<T>(s,e));
- cout << " New item added !" << endl;
- }
- int main (){
- set <P<string> > DBS;
- set<P<int > > DB;
- string buf;
- while(1){
- cin >> buf;
- if (buf == "quit") return 0;
- if (buf == "KEYS") Print(DBS);
- else
- if (buf == "SET") add_elem(DBS);
- else
- if (buf == "GET") Print_elem(DBS);
- else
- cout << " Inknown command " << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement