Содержание
- 2. Итераторы — это клей, скрепляющий алгоритмы стандартной библиотеки с их данными. Итераторы можно также назвать механизмом,
- 3. Для того чтобы считать последовательность, алгоритм обычно получает пару итераторов [a,b) и перемещается по элементам с
- 4. Алгоритмы, записывающие элементы последовательности, часто получают только итератор, установленный на ее первый элемент. template void f
- 5. #include advance · back_insert_iterator · back_inserter · bidirectional_iterator_tag · distance · forward_iterator_tag · front_insert_iterator · front_inserter
- 6. Операции над итераторами ++р Префиксная инкрементация: устанавливает итератор р на следующий элемент последовательности или на элемент,
- 7. р != q Неравенство: ! (p==q) p p p>q Указывает ли итератор p на элемент, расположенный
- 8. Итераторы ввода и вывода являются наиболее ограниченными типами итераторов: они могут выполнять последовательные однопроходные операции ввода
- 9. input iterator - Можем перемещаться вперед с помощью оператора ++ и считывать каждый элемент только один
- 10. template struct iterator { typedef C iterator_category; typedef T value_type; typedef Dist distance_type; }; Категории итераторов
- 11. Примеры реализаций #define _STRING_ITERATOR(ptr) iterator(ptr, this) iterator begin() { // return iterator for beginning of mutable
- 12. Итераторы можно определять отдельными переменными, а можно использовать анонимные непосредственно в качестве аргументов при вызове. vector
- 13. Вспомогательные функции для итераторов Для большего удобства при работе с итераторами в библиотеке реализованы две вспомогательные
- 14. Примеры: advance #include #include #include using namespace std; int main () { vector v; for (int
- 15. Примеры: distance #include #include #include using namespace std; int main () { vector v; for (int
- 16. Примеры: begin и end #include #include using namespace std; int main () { int foo[ ]
- 17. iterator_traits #include #include #include int main() { typedef std::iterator_traits traits; if ( typeid (traits::iterator_category) == typeid
- 18. std::prev #include // std::cout #include // std::next #include // std::list #include // std::for_each int main ()
- 19. std::next #include // std::cout #include // std::next #include // std::list #include // std::for_each int main ()
- 20. iterator_traits #include #include #include #include using namespace std; template void function( it i1, it i2 )
- 21. int main( ) { vector vc( 10,'a' ); list li( 10 ); function( vc.begin( ), vc.end(
- 22. Создаем свой итератор #include #include class MyIterator : public std::iterator { int* p; public: MyIterator(int* x)
- 23. Распределители памяти Три стратегии управления памятью в С++: 1. Распределение общего назначения, или универсальное распределение может
- 24. На практике мы часто сталкиваемся с комбинацией этих стратегий. Например, возможно, ваш диспетчер памяти использует схему
- 25. Выбор стратегии В чем состоит отличие различных уровней управления памятью в контексте STL и типичных средах,
- 26. Распределитель по умолчанию (The default allocator) template class allocator { public: typedef T* pointer; typedef const
- 27. Пример создания аллокатора (взято на stackoverflow.com) #include #include #include #include class Arena { public: Arena() {
- 28. auto mem = m_memory; m_available -= n; m_memory += n; ++m_allocations; return mem; } void deallocate(void*
- 29. Предполагается, что контейнеры обязаны обращаться к аллокатору не напрямую, а через шаблон std::allocator_traits, который предоставляет значения
- 30. template struct ArenaAllocator { using value_type = T; using Traits = std::allocator_traits >; explicit ArenaAllocator(Arena& arena)
- 31. Операторы сравнения: template bool operator==(const ArenaAllocator & lhs, const ArenaAllocator & rhs) { return lhs.m_arena ==
- 32. // применение с разными контейнерами #include #include #include #include #include #include #include #include #include #include using
- 33. template using a_set = std::set , ArenaAllocator >; template using a_map = std::map , ArenaAllocator >>;
- 34. int main() { Arena arena; ArenaAllocator arena_allocator( arena); a_string s_empty (arena_allocator); a_string s_123("123", arena_allocator); a_vector v_int
- 35. Виртуализация функций – не членов класса. По книги С. Мейерса «Наиболее эффективное использование С++» (пр. 25)
- 36. class NewsLetter {// газета: текст и иллюстрации public: NewsLetter (istream& str){ while (str) { // Добавить
- 37. error LNK2001: unresolved external symbol "public: virtual class std::basic_ostream > & __thiscall TextBlock::operator > &)const "
- 38. Альтернативный подход - объявить виртуальную функцию для вывода (например, функцию print) и определить ее в классах
- 39. class NLComponent { public: virtual ostream& print(ostream& s) const = 0; }; class TextBlock: public NLComponent
- 40. Домашнее задание на неделю Проект 33. С любого сайта (например - новостного) взять текст (три-четыре абзаца)
- 42. Скачать презентацию







































Как создать обложку для книги в InDesign
ВКР: разработка сети связи 4G стандарта LTE
Python. Функции часть 1 (лекция 8)
Передача данных между объектами (Лабораторная работа №2)
Путь к компьютерному зрению
Obraz Rosji w polskich mediach
Последствия информатизации в политике
Передача информации по техническим каналам к § 8 в учебнике И. Г. Семакина, Е. К. Хеннера
Служебные программы ОС Windows
Мобильное обучение русскому языку, как иностранному в современном поликультурном пространстве
Pencil Code. Подфункции и тестирование
Общие сведения о языке программирования ПАСКАЛЬ. Начала программирования
Как обратиться за социальной помощью через интернет. Памятка населению
Электронное правительство – это единый механизм взаимодействия государства и граждан
Логические основы работы компьютера
Техническое задание дизайнеру для HR
Конструкции структурного программирования в Си
Программирование (Python)
Процессы и модели жизненного цикла ИС. Лекция 3
Поиск в массиве
Программа развития Синергия. Проект: объединение городских мануфактур
Феномены ПК
Вставка и удаление элементов одномерного массива
Редактирование и форматирование web-текста
Системы счисления информатика для СПО
Я люблю проектировать и рисовать
Создание мультимедийной презентации В рамках создания тематического учебного проекта
ЕГЭ. Информатика, задание 2