STL_ последовательные контейнеры (1114992)
Текст из файла
STL: последовательные контейнерыSTL: последовательные контейнерыАлександр СмальCS центр12 февраля 2014Санкт-Петербургhttp://compscicenter.ru1/11STL: последовательные контейнерыSTL: введение∙ STL = Standard Template Library∙ STL описан в стандарте C++, но не упоминается там явно.∙ Авторы: Александр Степанов, Дэвид Муссер и Менг Ли(сначала для HP, а потом для SGI).∙ Основан на разработках для языка Ада.∙ Основные составляющие:∙ контейнеры (хранение объектов в памяти),∙ итераторы (доступ к элементам контейнера),∙ алгоритм (для работы с последовательностями),∙ адаптеры (обёртки над контейнерами)∙ функциональные объекты, функторы (обобщениефункций).∙ потоки ввода/вывода.∙ Всё определено в пространстве имён std.http://compscicenter.ru2/11STL: последовательные контейнерыОбщие сведения о контейнерахКонтейнеры библиотеки STL можно разделить на четырекатегории:∙ последовательные,∙ ассоциативные,∙ контейнеры-адаптеры,∙ псевдоконтейнеры.Требования к хранимым объектам:1.
copy-constructable2. assignable3. “стандартная семантика”Итераторы — объекты для доступа к элементам контейнера ссинтаксисом указателей.http://compscicenter.ru3/11STL: последовательные контейнерыОбщие члены контейнеровТипы (typedef-ы или вложенные класс):1. C::value_type2. C::reference3. C::const_reference4. C::pointer5. C::iterator6.
C::const_iterator7. C::size_typeМетоды:1. Конструктор по умолчанию, конструктор копирования,оператор присваивания, деструктор.2. begin(), end()3. Операторы сравнения: ==, !=, >, >=, <, <=.4. size(), empty().5. swap(obj2)http://compscicenter.ru4/11STL: последовательные контейнерыПоследовательные контейнерыОбщие члены1. Конструктор от двух итераторов2. Конструктор от count и defVal3. Двух итераторный erase4. push_back, pop_back, back5. front6. assign от двух итераторов7. assign от count и val8. insert от итератора и val9. insert от итератора, n и val10. insert от трёх итераторовhttp://compscicenter.ru5/11STL: последовательные контейнерыvectorC-подобный динамический массив произвольного доступа савтоматическим изменением размера при добавленииэлементов.1.
operator[], at2. resize3. capacity, reserveРазработан для работы со старым кодом.# include < vector >void l egacy_function ( int * m , int size );std :: vector < int > v ;...l eg ac y _function (& v [0] , v . size ());http://compscicenter.ru6/11STL: последовательные контейнерыdequeКонтейнер похож на vector, но с возможностью быстройвставки и удаления элементов на обоих концах за O(1).Реализован как список указателей на массивы фиксированногоразмера.1. Конструктор от n2. operator[], at3. resize4. push_front, pop_front# include < deque >std :: deque < std :: string > d ;d .
push_back ( " , world ! " );d . push_front ( " Hello " );std :: cout << d [0] << d [1] << std :: endl ;http://compscicenter.ru7/11STL: последовательные контейнерыlistДвусвязный список. В любом месте контейнера вставка иудаление производятся за O(1).1. merge, remove, remove_if, sort, unique2. splice3. push_front, pop_front# include < list >std :: list < std :: string > l ;l . push_back ( " , world ! " );l .
push_front ( " Hello " );std :: cout << l . size ();http://compscicenter.ru8/11STL: последовательные контейнерыstring, wstring, basic_stringКонтейнер для хранения символьных последовательностей.1. Метод c_str() для совместимости со старым кодом:std :: string res = " Hello " ;...printf ( " % s " , res .
c_str ());2. поддержка работы с строками в стиле C3. множество алгоритмов вроде substr() (в терминахиндексов),4. string = basic_string<char>5. wstring = basic_string<wchar_t>6. могут быть реализованы как COW (Copy-On-Write).http://compscicenter.ru9/11STL: последовательные контейнерыАдаптеры и псевдоконтейнерыАдаптеры:1. stack — реализация интерфейса стека.2.
queue — реализация интерфейса очереди.3. priority_queue — очередь с приоритетом на куче.Псевдо-контейнеры:1. vector<bool>1.1 ненастоящий контейнер (не хранит bool-ы),1.2 использует proxy-объекты.2. bitsetСлужит для хранения битовых масок. Похож наvector<bool> фиксированного размера.3. valarrayШаблон служит для хранения числовых массивов иоптимизирован для достижения повышеннойвычислительной производительности.http://compscicenter.ru10/11STL: последовательные контейнерыЕщё о vectorvector — самый универсальный последовательный контейнер.ИдиомыСжатие и очистка:std :: vector < int > v ;...std :: vector < int >( v ).
swap ( v ); // compress, C++11 shrink_to_fitstd :: vector < int >(). swap ( v );// clearИспользование reserve и capacity:std :: vector < int > v ;v . reserve ( N ); // N - upperbound for size...if ( v . capacity () == v . size ()) // reallocation...http://compscicenter.ru11/11.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.