Lecture_15-STL.ppt
- Количество слайдов: 14
Лекция 15. Стандартная библиотека. Артур Садеков
Содержание стандартной библиотеки • • Контейнеры Алгоритмы Строки Потоки Nortel Networks Confidential
Контейнеры • • • <vector> - одномерный массив элементов <list> - двусвязный список элементов <map> - ассоциативный массив элементов <stack> - стек элементов <queue> - очередь элементов Nortel Networks Confidential
Vector template<class T, class A=allocator<T>> class std: : vector {/*. . . */}; #include <vector> int main() { try { vector<int> vec(50); for (int i=0; i<vec. size(); ++i) { vec[i] = i; } int j = vec. at(i); } catch(std: : out_of_range) { vec. resize(i); } return 0; } Nortel Networks Confidential
List template<class T, class A=allocator<T>> class std: : list {/*. . . */}; #include <list> int main() { list<int> x. List; x. Vec. push_back(10); x. Vec. push_front(20); int i = x. Vec. front(); x. Vec. remove(10); return 0; } Nortel Networks Confidential
Map class Employee. DB { map<string, Employee*> employee. Map; public: void add(string name, Employee* p. Emp) { employee. Map[name] = p. Emp; } //. . . }; void f () { Programmer *p = new Programmer(“Ivan”, “Petrov”); Employee. DB database; database. add(“Ivan Petrov”, p); //. . . } Nortel Networks Confidential
Общие методы • • • size empty front back push_back/pop_back push_front/pop_front Nortel Networks Confidential
Итераторы void cleanup(list<Employee*>& r. List) { list<Employee*>: : iterator p; for(p = r. List. begin(); p!=r. List. end(); ++p) { if ( (*p)->performance() < 90 ) (*p)->fire(); } } bool fire (list<Employee*>& r. List, const string& name) { list<Employee*>: : iterator p; p = find(r. List. begin(), r. List. end(), name); if ( p==rlist. end()) return false; (*p)->fire(); return true; } Nortel Networks Confidential
Итераторы p итератор: вектор: итераторы: I v a n P e begin() список: Nortel Networks Confidential t r o v end() A B C
Итераторы template <class T 1, class T 2> struct pair { T 1 first; T 2 second; pair() {} pair(const T 1& x, const T 2& y) : first(x), second(y) {} }; void print_all_empls(const map<string, Employee*>& db) { typedef map<string, Employee*>: : const_iterator I; for(I p = db. begin(); p!=db. end(); ++p) { cout << p->second->print() << endl; } } Nortel Networks Confidential
Алгоритмы • • find copy replace swap fill rotate sort max_element Nortel Networks Confidential
Потоки • • ios istream / ostream / iostream ifstream / fostream / fstream cin, cout, cerr Nortel Networks Confidential
Потоки ofstream output. File; output. File. open(“file 1. out”); typedef list<Employee*>: : iterator I; int i=0; for(I p = r. List. begin(); p!=r. List. end(); ++p, ++i) { if ( (*p)->performance() > 95 ) output. File << i << “. ” << *(*p) << endl; } ostream& operator<<(ostream& os, const Employee& ref ) { os << ref. name() << “ ” << ref. surname() << endl; return os; } Nortel Networks Confidential
Конец Nortel Networks Confidential
Lecture_15-STL.ppt