Ne dorim:
Vom crea o clasă SetList cu următoarele funcționalități:
#include <iostream> #include <list> template <class T> class SetList { std::list <T> l; public: bool empty() { return l.empty(); } int size() { return l.size(); } bool add(T other) { typename std::list<T>::iterator it; bool found = false; for(it = l.begin(); it != l.end(); ++it) { if(*it == other) { found = true; break; } } if(!found) { l.push_back(other); } return !found; } bool remove(T other) { typename std::list <T>::iterator it; bool found = false; for(it = l.begin(); it != l.end(); ++it) { if(*it == other) { found = true; break; } } if(found) { l.erase(it); } return found; } void print() { std::cout << "List: "; typename std::list <T>::iterator it; for(it = l.begin(); it != l.end(); ++it) { std::cout << *it << " "; } std::cout << "\n"; } };
Pentru test, folosim următoarea sursă:
#include "SetList.h" int main() { SetList <int> set; std::cout << set.add(1) << "\n"; set.print(); std::cout << set.add(2) << "\n"; set.print(); std::cout << set.add(2) << "\n"; set.print(); std::cout << set.remove(1) << "\n"; set.print(); std::cout << set.remove(1) << "\n"; set.print(); return 0; }
g++ main.cpp -o main
./main 1 List: 1 1 List: 1 2 0 List: 1 2 1 List: 2 0 List: 2