<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://mit.spbau.ru/sewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Btv</id>
		<title>SEWiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://mit.spbau.ru/sewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Btv"/>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Btv"/>
		<updated>2026-04-07T20:04:27Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Cpp_tickets1&amp;diff=833</id>
		<title>Cpp tickets1</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Cpp_tickets1&amp;diff=833"/>
				<updated>2012-01-12T07:25:32Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: /* Вопросы по C++, первый семестр */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Вопросы по C++, первый семестр ==&lt;br /&gt;
# Языки C и C++&lt;br /&gt;
#:С++ — (почти) надмножество C. Возможность написания эффективных программ на C++. Сложности программирования на C++: прямая работа с памятью. Превращение кода в программу: компиляция и линковка. Что проверяется при компиляции, а что — при сборке. Структура программы на C/C++:   файлы кода и заголовочные файлы. Что можно поместить в заголовочные файл, а что — нельзя. Макросы — очень плохая идея. Макросы для защиты от повторного включения заголовочного файла. Зависимости между частями программы. Makefile.&lt;br /&gt;
# Как работает программа&lt;br /&gt;
#:Во что превращается код в исполняемом файле. Структура исполняемой программы. Раздел кода, раздел данных. Использование памяти в работающей программе. Стек и куча. Как передаются параметры функции. Где оказываются локальные переменные.&lt;br /&gt;
# Указатели и ссылки&lt;br /&gt;
#: Передача параметра с помощью указателя. Взятие адреса переменной и, наоборот, значения по адресу. Неинициализированные указатели. Нулевой указатель. Потенциальные проблемы при использовании указателей. Ссылки. Сходство с ссылок с указателями и их отличия. Как хранятся ссылки.&lt;br /&gt;
#Распределение памяти в куче&lt;br /&gt;
#: Язык C: malloc/free. Язык C++: new/delete и new[]/delete[]. Почему нужны 2 набора операторов. Потенциальные проблемы. Вопросы производительности. Двумерные массивы.&lt;br /&gt;
#С++ как &amp;quot;С с удобными структурами&amp;quot;&lt;br /&gt;
#: Идея инкапсуляции. Конструктор и деструктор. Класс &amp;quot;самоуправляющегося&amp;quot; массива. Автоматический вызов деструктора. Об опасности неожиданного завершения программы. Различиях malloc/free и new/delete для классов. Конструктор копирования. Проблемы с присваиванием объектов. Как запретить присваивание.&lt;br /&gt;
#Строки в C. Ввод и вывод в C и C++&lt;br /&gt;
#: Массивы и указатели. Строки. Конец строки. Строковые константы. Операции со строками.Дескриптор файла, FILE. Что происходит пр открытии закрытии файла. Буфферизация, flush/fflush. Стандартные файлы stdin, stdout, stderr. Потоковый вывод на экран (std::out, std::err). Перегрузка операторов ввода, вывода.&lt;br /&gt;
#&amp;quot;Внутренности&amp;quot; класса&lt;br /&gt;
#: Поля и методы. Ограничение прав доступа к членам класса. Все поля должны быть private. Почему это удобно. Проблемы с производительностью. inline. Какие методы стоит делать public? Принцип &amp;quot;всегда целого&amp;quot; объекта. Что нужно оптимизировать программисту, а что сделает за него компилятор. Примеры оптимизации: никогда не вызывать функцию дважды. Code conventions.&lt;br /&gt;
#Инициализация и const&lt;br /&gt;
#: Потенциальные проблема: неинициализированные переменные. Возможности инициализации в конструкторе. Другая проблема — случайное изменение переменных. Решение: константные поля. Констатные методы. Константное возвращаемое значение. &amp;quot;Заразность&amp;quot; const. Идея возвращения значения по ссылке. возможность создания &amp;quot;парных&amp;quot; методов const/не-const. this.&lt;br /&gt;
#Слово static&lt;br /&gt;
#: Статические &amp;quot;глобальные&amp;quot; переменные. Статические локальные переменные. Статические функции. Статические члены класса. Необходимость инстанциации статических полей.&lt;br /&gt;
#Идея namespace&lt;br /&gt;
#: Определение пространств имён. Глобальное пространство имён. Вложенные пространства имён. Анонимный namespace. Директива using. Алиасы для namespace.&lt;br /&gt;
#Перегрузка операторов. &lt;br /&gt;
#: Перегрузка оператора присваивания. Не стоит злоупотреблять перегрузкой (кроме оператора присваивания). Какие операторы можно перегружать. Какие операторы следует перегружать как методы, какие как внешние функции.&lt;br /&gt;
# Наследование&lt;br /&gt;
#: Идея &amp;quot;расширения&amp;quot; типа. Проблемы с копированием. Неявное приведение типов. protected. Подробнее об ограничениях, которые накладывают права доступа. friend'ы. Невозможность полной защиты в C++. Права доступа как средство &amp;quot;самоограничения&amp;quot; для программиста.&lt;br /&gt;
#Перегрузка и переопределение. Полиморфизм&lt;br /&gt;
#: Перегрузка имен методов. Не стоит злоупотреблять перегрузкой. Перегрузка конструкторов. Статическая и динамическая типизация: разные подходы в разных языках. Перегрузка и переопределение — разные слова. Виртуальные методы. Чисто виртуальные методы. Таблица виртуальных функций. Виртуальные деструкторы. Порядок построения таблицы. Опасность вызова виртуальных методов из конструктора. Почему это не запрещено синтаксически?&lt;br /&gt;
# Умные указатели&lt;br /&gt;
#: Идея умных указателей. Для чего могут быть полезны. Какие бывают, как пользваться. Какие могут быть проблемы.&lt;br /&gt;
#auto_ptr&lt;br /&gt;
#: Идея auto_ptr. Поведение при копировнии. Для чего может быть полезен. Какие могут быть проблемы.&lt;br /&gt;
#Идея template'ов&lt;br /&gt;
#: Общая идея template'ов. Шаблоны функций и классов. Вывод шаблонных параметров из аргументов функций. Компиляция шаблонов. Почему их нужно определять в заголовочных файлах.&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=830</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=830"/>
				<updated>2012-01-10T20:13:08Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: /* Экзамен */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Программа курса ==&lt;br /&gt;
[http://mit.spbau.ru/courses/cpp Программа курса]&lt;br /&gt;
&lt;br /&gt;
== Домашнее задание ==&lt;br /&gt;
[http://code.google.com/p/spbau-cpp-2011/wiki/HomeWorkResultCpp Домашнее задание]&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [[Конспекты С++|Лекции прошлого года]]&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;br /&gt;
* [http://easy-coding.blogspot.com/search/label/c%2B%2B http://easy-coding.blogspot.com/search/label/c++ ]&lt;br /&gt;
* [http://www.parashift.com/c++-faq-lite/ C++ FAQ]&lt;br /&gt;
* [http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms More C++ Idioms]&lt;br /&gt;
&lt;br /&gt;
== Code review ==&lt;br /&gt;
[[Cpp code review|Code review]]&lt;br /&gt;
&lt;br /&gt;
== Досрочный экзамен ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&lt;br /&gt;
''&amp;quot;Есть такая традиция в СПбАУ -- каждый год 5 курс '''&amp;lt;u&amp;gt;пытается&amp;lt;/u&amp;gt;''' сдать экзамен по C++&amp;quot;'' [http://twitter.com/#!/bashorov/status/123495328761643008 (c)]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Досрочный экзамен по C++ 2010'''&amp;lt;br/&amp;gt;&lt;br /&gt;
11:0 в пользу преподавателя&lt;br /&gt;
&lt;br /&gt;
'''Досрочный экзамен по C++ 2011'''&amp;lt;br/&amp;gt;&lt;br /&gt;
11:0 в пользу преподавателя (+2 технических поражения)&lt;br /&gt;
&lt;br /&gt;
== Экзамен ==&lt;br /&gt;
[[Cpp_tickets1|Вопросы к экзамену]]&lt;br /&gt;
&lt;br /&gt;
Первая группа '''11.00 30 декабря''' ''430''&lt;br /&gt;
&lt;br /&gt;
Участники:&lt;br /&gt;
# Башоров З.А.&lt;br /&gt;
# Краско Е.С.&lt;br /&gt;
# Кононенко В.А.&lt;br /&gt;
# Гуменюк С.С.&lt;br /&gt;
# Кормишин С.В.&lt;br /&gt;
# Минкин И.В.&lt;br /&gt;
# Шеставин Д.В.&lt;br /&gt;
# Кудинкин А.И.&lt;br /&gt;
&lt;br /&gt;
Вторая группа '''11.00 12 января''' ''где?''&lt;br /&gt;
&lt;br /&gt;
Участники:&lt;br /&gt;
# Лазарев С.Г. (не раньше 11.01.2012)&lt;br /&gt;
# Казенюк С.С. (не раньше 10.01.2012)&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=813</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=813"/>
				<updated>2011-12-28T05:23:04Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: /* Экзамен */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Программа курса ==&lt;br /&gt;
[http://mit.spbau.ru/courses/cpp Программа курса]&lt;br /&gt;
&lt;br /&gt;
== Домашнее задание ==&lt;br /&gt;
[http://code.google.com/p/spbau-cpp-2011/wiki/HomeWorkResultCpp Домашнее задание]&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [[Конспекты С++|Лекции прошлого года]]&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;br /&gt;
* [http://easy-coding.blogspot.com/search/label/c%2B%2B http://easy-coding.blogspot.com/search/label/c++ ]&lt;br /&gt;
* [http://www.parashift.com/c++-faq-lite/ C++ FAQ]&lt;br /&gt;
* [http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms More C++ Idioms]&lt;br /&gt;
&lt;br /&gt;
== Code review ==&lt;br /&gt;
[[Cpp code review|Code review]]&lt;br /&gt;
&lt;br /&gt;
== Досрочный экзамен ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&lt;br /&gt;
''&amp;quot;Есть такая традиция в СПбАУ -- каждый год 5 курс '''&amp;lt;u&amp;gt;пытается&amp;lt;/u&amp;gt;''' сдать экзамен по C++&amp;quot;'' [http://twitter.com/#!/bashorov/status/123495328761643008 (c)]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Досрочный экзамен по C++ 2010'''&amp;lt;br/&amp;gt;&lt;br /&gt;
11:0 в пользу преподавателя&lt;br /&gt;
&lt;br /&gt;
'''Досрочный экзамен по C++ 2011'''&amp;lt;br/&amp;gt;&lt;br /&gt;
11:0 в пользу преподавателя (+2 технических поражения)&lt;br /&gt;
&lt;br /&gt;
== Экзамен ==&lt;br /&gt;
[[Cpp_tickets1|Вопросы к экзамену]]&lt;br /&gt;
&lt;br /&gt;
Первая группа '''11.00 30 декабря''' ''где?''&lt;br /&gt;
&lt;br /&gt;
Участники:&lt;br /&gt;
# Башоров З.А.&lt;br /&gt;
# Краско Е.С.&lt;br /&gt;
# Кононенко В.А.&lt;br /&gt;
# Гуменюк С.С.&lt;br /&gt;
# Кормишин С.В.&lt;br /&gt;
# Минкин И.В.&lt;br /&gt;
# Шеставин Д.В.&lt;br /&gt;
# Кудинкин А.И.&lt;br /&gt;
&lt;br /&gt;
Вторая группа ''когда?'' ''где?''&lt;br /&gt;
&lt;br /&gt;
Участники:&lt;br /&gt;
# Лазарев С.Г. (не раньше 11.01.2012)&lt;br /&gt;
# Казенюк С.С. (не раньше 10.01.2012)&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=809</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=809"/>
				<updated>2011-12-27T09:55:12Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Программа курса ==&lt;br /&gt;
[http://mit.spbau.ru/courses/cpp Программа курса]&lt;br /&gt;
&lt;br /&gt;
== Домашнее задание ==&lt;br /&gt;
[http://code.google.com/p/spbau-cpp-2011/wiki/HomeWorkResultCpp Домашнее задание]&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [[Конспекты С++|Лекции прошлого года]]&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;br /&gt;
* [http://easy-coding.blogspot.com/search/label/c%2B%2B http://easy-coding.blogspot.com/search/label/c++ ]&lt;br /&gt;
* [http://www.parashift.com/c++-faq-lite/ C++ FAQ]&lt;br /&gt;
* [http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms More C++ Idioms]&lt;br /&gt;
&lt;br /&gt;
== Code review ==&lt;br /&gt;
[[Cpp code review|Code review]]&lt;br /&gt;
&lt;br /&gt;
== Досрочный экзамен ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&lt;br /&gt;
''&amp;quot;Есть такая традиция в СПбАУ -- каждый год 5 курс '''&amp;lt;u&amp;gt;пытается&amp;lt;/u&amp;gt;''' сдать экзамен по C++&amp;quot;'' [http://twitter.com/#!/bashorov/status/123495328761643008 (c)]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Досрочный экзамен по C++ 2010'''&amp;lt;br/&amp;gt;&lt;br /&gt;
11:0 в пользу преподавателя&lt;br /&gt;
&lt;br /&gt;
'''Досрочный экзамен по C++ 2011'''&amp;lt;br/&amp;gt;&lt;br /&gt;
11:0 в пользу преподавателя (+2 технических поражения)&lt;br /&gt;
&lt;br /&gt;
== Экзамен ==&lt;br /&gt;
[[Cpp_tickets1|Вопросы к экзамену]]&lt;br /&gt;
&lt;br /&gt;
Первая группа '''30 декабря''' ''где?''&lt;br /&gt;
&lt;br /&gt;
Участники:&lt;br /&gt;
# Башоров З.А.&lt;br /&gt;
# Краско Е.С.&lt;br /&gt;
# Кононенко В.А.&lt;br /&gt;
# Гуменюк С.С.&lt;br /&gt;
# Минкин И.В.&lt;br /&gt;
# Шеставин Д.В.&lt;br /&gt;
Вторая группа ''когда?'' ''где?''&lt;br /&gt;
&lt;br /&gt;
Участники:&lt;br /&gt;
# Лазарев С.Г. (не раньше 11.01.2012)&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Cpp_tickets1&amp;diff=808</id>
		<title>Cpp tickets1</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Cpp_tickets1&amp;diff=808"/>
				<updated>2011-12-27T09:40:37Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: Новая страница: «== Вопросы по C++, первый семестр == # Языки C и C++ #:С++ — (почти) надмножество C. Возможность напи…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Вопросы по C++, первый семестр ==&lt;br /&gt;
# Языки C и C++&lt;br /&gt;
#:С++ — (почти) надмножество C. Возможность написания эффективных программ на C++. Сложности программирования на C++: прямая работа с памятью. Превращение кода в программу: компиляция и линковка. Что проверяется при компиляции, а что — при сборке. Структура программы на C/C++:   файлы кода и заголовочные файлы. Что можно поместить в заголовочные файл, а что — нельзя. Макросы — очень плохая идея. Макросы для защиты от повторного включения заголовочного файла. Зависимости между частями программы. Makefile.&lt;br /&gt;
# Как работает программа&lt;br /&gt;
#:Во что превращается код в исполняемом файле. Структура исполняемой программы. Раздел кода, раздел данных. Использование памяти в работающей программе. Стек и куча. Как передаются параметры функции. Где оказываются локальные переменные.&lt;br /&gt;
# Указатели и ссылки&lt;br /&gt;
#: Передача параметра с помощью указателя. Взятие адреса переменной и, наоборот, значения по адресу. Неинициализированные указатели. Нулевой указатель. Потенциальные проблемы при использовании указателей. Ссылки. Сходство с ссылок с указателями и их отличия. Как хранятся ссылки.&lt;br /&gt;
#Распределение памяти в куче&lt;br /&gt;
#: Язык C: malloc/free. Язык C++: new/delete и new[]/delete[]. Почему нужны 2 набора операторов. Потенциальные проблемы. Вопросы производительности. Двумерные массивы.&lt;br /&gt;
#С++ как &amp;quot;С с удобными структурами&amp;quot;&lt;br /&gt;
#: Идея инкапсуляции. Конструктор и деструктор. Класс &amp;quot;самоуправляющегося&amp;quot; массива. Автоматический вызов деструктора. Об опасности неожиданного завершения программы. Различиях malloc/free и new/delete для классов. Конструктор копирования. Проблемы с присваиванием объектов. Как запретить присваивание.&lt;br /&gt;
#Строки в C. Ввод и вывод в C и C++&lt;br /&gt;
#: Массивы и указатели. Строки. Конеч строки. Строковые константы. Операции со строками.Дескриптор файла, FILE. Что происходит пр открытии закрытии файла. Буфферизация, flush/fflush. Стандартные файлы stdin, stdout, stderr. Потоковый вывод на экран (std::out, std::err). Перегрузка операторов ввода, вывода.&lt;br /&gt;
#&amp;quot;Внутренности&amp;quot; класса&lt;br /&gt;
#: Поля и методы. Ограничение прав доступа к членам класса. Все поля должны быть private. Почему это удобно. Проблемы с производительностью. inline. Какие методы стоит делать public? Принцип &amp;quot;всегда целого&amp;quot; объекта. Что нужно оптимизировать программисту, а что сделает за него компилятор. Примеры оптимизации: никогда не вызывать функцию дважды. Code conventions.&lt;br /&gt;
#Инициализация и const&lt;br /&gt;
#: Потенциальные проблема: неинициализированные переменные. Возможности инициализации в конструкторе. Другая проблема — случайное изменение переменных. Решение: константные поля. Констатные методы. Константное возвращаемое значение. &amp;quot;Заразность&amp;quot; const. Идея возвращения значения по ссылке. возможность создания &amp;quot;парных&amp;quot; методов const/не-const. this.&lt;br /&gt;
#Слово static&lt;br /&gt;
#: Статические &amp;quot;глобальные&amp;quot; переменные. Статические локальные переменные. Статические функции. Статические члены класса. Необходимость инстанциации статических полей.&lt;br /&gt;
#Идея namespace&lt;br /&gt;
#: Определение пространств имён. Глобальное пространство имён. Вложенные пространства имён. Анонимный namespace. Директива using. Алиасы для namespace.&lt;br /&gt;
#Перегрузка операторов. &lt;br /&gt;
#: Перегрузка оператора присваивания. Не стоит злоупотреблять перегрузкой (кроме оператора присваивания). Какие операторы можно перегружать. Какие операторы следует перегружать как методы, какие как внешние функции.&lt;br /&gt;
# Наследование&lt;br /&gt;
#: Идея &amp;quot;расширения&amp;quot; типа. Проблемы с копированием. Неявное приведение типов. protected. Подробнее об ограничениях, которые накладывают права доступа. friend'ы. Невозможность полной защиты в C++. Права доступа как средство &amp;quot;самоограничения&amp;quot; для программиста.&lt;br /&gt;
#Перегрузка и переопределение. Полиморфизм&lt;br /&gt;
#: Перегрузка имен методов. Не стоит злоупотреблять перегрузкой. Перегрузка конструкторов. Статическая и динамическая типизация: разные подходы в разных языках. Перегрузка и переопределение — разные слова. Виртуальные методы. Чисто виртуальные методы. Таблица виртуальных функций. Виртуальные деструкторы. Порядок построения таблицы. Опасность вызова виртуальных методов из конструктора. Почему это не запрещено синтаксически?&lt;br /&gt;
# Умные указатели&lt;br /&gt;
#: Идея умных указателей. Для чего могут быть полезны. Какие бывают, как пользваться. Какие могут быть проблемы.&lt;br /&gt;
#auto_ptr&lt;br /&gt;
#: Идея auto_ptr. Поведение при копировнии. Для чего может быть полезен. Какие могут быть проблемы.&lt;br /&gt;
#Идея template'ов&lt;br /&gt;
#: Общая идея template'ов. Шаблоны функций и классов. Вывод шаблонных параметров из аргументов функций. Компиляция шаблонов. Почему их нужно определять в заголовочных файлах.&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=799</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=799"/>
				<updated>2011-12-24T06:55:12Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Программа курса ==&lt;br /&gt;
[http://mit.spbau.ru/courses/cpp Программа курса]&lt;br /&gt;
&lt;br /&gt;
== Домашнее задание ==&lt;br /&gt;
[http://code.google.com/p/spbau-cpp-2011/wiki/HomeWorkResultCpp Домашнее задание]&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [[Конспекты С++|Лекции прошлого года]]&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;br /&gt;
* [http://easy-coding.blogspot.com/search/label/c%2B%2B http://easy-coding.blogspot.com/search/label/c++ ]&lt;br /&gt;
* [http://www.parashift.com/c++-faq-lite/ C++ FAQ]&lt;br /&gt;
* [http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms More C++ Idioms]&lt;br /&gt;
&lt;br /&gt;
== Code review ==&lt;br /&gt;
[[Cpp code review|Code review]]&lt;br /&gt;
&lt;br /&gt;
== Досрочный экзамен ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&lt;br /&gt;
''&amp;quot;Есть такая традиция в СПбАУ -- каждый год 5 курс '''&amp;lt;u&amp;gt;пытается&amp;lt;/u&amp;gt;''' сдать экзамен по C++&amp;quot;'' [http://twitter.com/#!/bashorov/status/123495328761643008 (c)]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Досрочный экзамен по C++ 2010'''&amp;lt;br/&amp;gt;&lt;br /&gt;
11:0 в пользу преподавателя&lt;br /&gt;
&lt;br /&gt;
'''Досрочный экзамен по C++ 2011'''&amp;lt;br/&amp;gt;&lt;br /&gt;
11:0 в пользу преподавателя (+2 технических поражения)&lt;br /&gt;
&lt;br /&gt;
== Экзамен ==&lt;br /&gt;
Первая группа '''30 декабря''' ''где?''&lt;br /&gt;
&lt;br /&gt;
Участники:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Первая группа ''когда?'' ''где?''&lt;br /&gt;
&lt;br /&gt;
Участники:&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Cpp_code_review&amp;diff=784</id>
		<title>Cpp code review</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Cpp_code_review&amp;diff=784"/>
				<updated>2011-12-08T11:34:45Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Команды ===&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Кринкина Михаила ====&lt;br /&gt;
* Ждан Анна&lt;br /&gt;
* Фофанова Мария&lt;br /&gt;
* Башоров Залим&lt;br /&gt;
* Великий Алексей&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Дмитрия Шеставина ====&lt;br /&gt;
* Гуменюк Станислав&lt;br /&gt;
* Иванов Антон&lt;br /&gt;
* Казенюк Сергей&lt;br /&gt;
* Краско Евгений&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Коровина Алексея ====&lt;br /&gt;
* Кормишин Сергей&lt;br /&gt;
* Кудинкин Алексей&lt;br /&gt;
* Лазарев Сергей&lt;br /&gt;
* Мартынов Семён&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Алины Певзнер ====&lt;br /&gt;
* Опейкин Александр&lt;br /&gt;
* Савельев Владислав&lt;br /&gt;
* Сорокин Артём&lt;br /&gt;
* Князев Сергей&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Лепенькина Ярослава ====&lt;br /&gt;
* Кузьмин Александр&lt;br /&gt;
* Минкин Илья&lt;br /&gt;
* Смирнов Владимир&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Кононеко Василия ====&lt;br /&gt;
* Гладкихх Максим&lt;br /&gt;
* Сердюк Дмитрий&lt;br /&gt;
* Тугарев Денис&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Крашенинниковой Ксении ====&lt;br /&gt;
* Диевский Алексей&lt;br /&gt;
* Чернявский Илья&lt;br /&gt;
* Витвицкий Александр&lt;br /&gt;
&lt;br /&gt;
=== Ссылки на репозиторий вашего C++ кода ===&lt;br /&gt;
https://github.com/OSLL/openvzui/tree/master/openvzui  -если совсем ничего не будет, то можно потроллить этот код&lt;br /&gt;
&lt;br /&gt;
https://github.com/dimatwl/fuzzy-searching - здесь точно есть, над чем поспорить. Главное, чтобы все это не закончилось линчеванием автора =)))&lt;br /&gt;
&lt;br /&gt;
https://github.com/Temp1ar/multiplexer - Мультиплексор входящих подключений (Коровин Алексей)&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/searchbycolor - проект &amp;quot;Поиск по цвету&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/aptu-practice-yaroslav/ - welcome , придирайтесь к каждой строчке :)&lt;br /&gt;
&lt;br /&gt;
https://github.com/vasily-knk/nir-project - Кратчайшие пути в графах (Кононенко Василий)&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/spbau-cpp-2011/source/browse/#svn%2Ftrunk%2Fkrasheninnikova%2Fcode_review%2Fpaths - &amp;lt;br /&amp;gt;&lt;br /&gt;
Анализ мультиплексных спектров (Крашенинникова Ксения)&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Cpp_code_review&amp;diff=775</id>
		<title>Cpp code review</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Cpp_code_review&amp;diff=775"/>
				<updated>2011-12-06T08:27:56Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: /* Команды */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Команды ===&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Кринкина Михаила ====&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Дмитрия Шеставина ====&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Коровина Алексея ====&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Алины Певзнер ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Лепенькина Ярослава ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Команда автора Кононеко Василия ====&lt;br /&gt;
&lt;br /&gt;
=== Ссылки на репозиторий вашего C++ кода ===&lt;br /&gt;
https://github.com/OSLL/openvzui/tree/master/openvzui  -если совсем ничего не будет, то можно потроллить этот код&lt;br /&gt;
&lt;br /&gt;
https://github.com/dimatwl/fuzzy-searching - здесь точно есть, над чем поспорить. Главное, чтобы все это не закончилось линчеванием автора =)))&lt;br /&gt;
&lt;br /&gt;
https://github.com/Temp1ar/multiplexer - Мультиплексор входящих подключений (Коровин Алексей)&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/searchbycolor - проект &amp;quot;Поиск по цвету&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/aptu-practice-yaroslav/ - welcome , придирайтесь к каждой строчке :)&lt;br /&gt;
&lt;br /&gt;
https://github.com/vasily-knk/nir-project - Кратчайшие пути в графах (Кононенко Василий)&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=732</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=732"/>
				<updated>2011-11-25T10:17:12Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Программа курса ==&lt;br /&gt;
[http://mit.spbau.ru/courses/cpp Программа курса]&lt;br /&gt;
&lt;br /&gt;
== Домашнее задание ==&lt;br /&gt;
[http://code.google.com/p/spbau-cpp-2011/wiki/HomeWorkResultCpp Домашнее задание]&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [[Конспекты С++|Лекции прошлого года]]&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;br /&gt;
* [http://easy-coding.blogspot.com/search/label/c%2B%2B http://easy-coding.blogspot.com/search/label/c++ ]&lt;br /&gt;
* [http://www.parashift.com/c++-faq-lite/ C++ FAQ]&lt;br /&gt;
* [http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms More C++ Idioms]&lt;br /&gt;
&lt;br /&gt;
== Code review ==&lt;br /&gt;
[[Cpp code review|Code review]]&lt;br /&gt;
&lt;br /&gt;
== Досрочный экзамен ==&lt;br /&gt;
&amp;lt;div align=&amp;quot;right&amp;quot;&amp;gt;&lt;br /&gt;
''&amp;quot;Есть такая традиция в СПбАУ -- каждый год 5 курс '''&amp;lt;u&amp;gt;пытается&amp;lt;/u&amp;gt;''' сдать экзамен по C++&amp;quot;'' [http://twitter.com/#!/bashorov/status/123495328761643008 (c)]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Досрочный экзамен по C++ 2010'''&amp;lt;br/&amp;gt;&lt;br /&gt;
11:0 в пользу преподавателя&lt;br /&gt;
&lt;br /&gt;
'''Досрочный экзамен по C++ 2011'''&amp;lt;br/&amp;gt;&lt;br /&gt;
11:0 в пользу преподавателя (+2 технических поражения)&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Cpp_code_review&amp;diff=731</id>
		<title>Cpp code review</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Cpp_code_review&amp;diff=731"/>
				<updated>2011-11-25T10:15:43Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Команды ===&lt;br /&gt;
&lt;br /&gt;
=== Ссылки на репозиторий вашего C++ кода ===&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Cpp_code_review&amp;diff=730</id>
		<title>Cpp code review</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Cpp_code_review&amp;diff=730"/>
				<updated>2011-11-25T10:04:22Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: Новая страница: «== Code review ==   === ССылки на репозиторий C++ кода ===»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Code review ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ССылки на репозиторий C++ кода ===&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=553</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=553"/>
				<updated>2011-10-08T17:52:45Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: /* Досрочный экзамен */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Программа курса ==&lt;br /&gt;
[http://mit.spbau.ru/courses/cpp Программа курса]&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [[Конспекты С++|Лекции прошлого года]]&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;br /&gt;
* [http://easy-coding.blogspot.com/search/label/c%2B%2B http://easy-coding.blogspot.com/search/label/c++ ]&lt;br /&gt;
* [http://www.parashift.com/c++-faq-lite/ C++ FAQ]&lt;br /&gt;
&lt;br /&gt;
== Досрочный экзамен ==&lt;br /&gt;
'''Досрочный экзамен по C++''' пройдет '''10.10.2011(понедельник) в 18:00''' в 427 аудитории.&lt;br /&gt;
&lt;br /&gt;
Список студентов действительно желающих попробовать сдать экзамен:&lt;br /&gt;
# Василий Кононенко&lt;br /&gt;
# Алексей Кудинкин&lt;br /&gt;
# Дмитрий Сердюк&lt;br /&gt;
# Илья Минкин&lt;br /&gt;
# Залим Башоров&lt;br /&gt;
# Сергей Лазарев&lt;br /&gt;
# Алексей Великий (???)&lt;br /&gt;
# Андрей Зорин&lt;br /&gt;
# Анна Ждан&lt;br /&gt;
# Сергей Кормишин&lt;br /&gt;
# Дмитрий Шеставин&lt;br /&gt;
# Максим Гладких&lt;br /&gt;
# Сергей Казенюк&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=536</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=536"/>
				<updated>2011-10-04T08:44:17Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Программа курса ==&lt;br /&gt;
[http://mit.spbau.ru/courses/cpp Программа курса]&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [[Конспекты С++|Лекции прошлого года]]&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;br /&gt;
* [http://easy-coding.blogspot.com/search/label/c%2B%2B |http://easy-coding.blogspot.com/search/label/c++ ]&lt;br /&gt;
&lt;br /&gt;
== Досрочный экзамен ==&lt;br /&gt;
'''Досрочный экзамен по C++''' пройдет '''10.10.2011(понедельник) в 18:00''' в [???]&lt;br /&gt;
&lt;br /&gt;
Список студентов действительно желающих попробовать сдать экзамен:&lt;br /&gt;
# Василий Кононенко&lt;br /&gt;
# Алексей Кудинкин&lt;br /&gt;
# Дмитрий Сердюк&lt;br /&gt;
# Илья Минкин&lt;br /&gt;
# Залим Башоров&lt;br /&gt;
# Сергей Лазарев&lt;br /&gt;
# Алексей Великий (???)&lt;br /&gt;
# Андрей Зорин&lt;br /&gt;
# Анна Ждан&lt;br /&gt;
# Сергей Кормишин&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=535</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=535"/>
				<updated>2011-10-04T08:42:22Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: /* Полезные ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://mit.spbau.ru/courses/cpp Программа курса]&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [[Конспекты С++|Лекции прошлого года]]&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;br /&gt;
* [http://easy-coding.blogspot.com/search/label/c%2B%2B |http://easy-coding.blogspot.com/search/label/c++ ]&lt;br /&gt;
&lt;br /&gt;
== Досрочный экзамен ==&lt;br /&gt;
'''Досрочный экзамен по C++''' пройдет '''10.10.2011(понедельник) в 18:00''' в [???]&lt;br /&gt;
&lt;br /&gt;
Список студентов действительно желающих попробовать сдать экзамен:&lt;br /&gt;
# Василий Кононенко&lt;br /&gt;
# Алексей Кудинкин&lt;br /&gt;
# Дмитрий Сердюк&lt;br /&gt;
# Илья Минкин&lt;br /&gt;
# Залим Башоров&lt;br /&gt;
# Сергей Лазарев&lt;br /&gt;
# Алексей Великий (???)&lt;br /&gt;
# Андрей Зорин&lt;br /&gt;
# Анна Ждан&lt;br /&gt;
# Сергей Кормишин&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=530</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=530"/>
				<updated>2011-10-03T17:57:23Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://mit.spbau.ru/courses/cpp Программа курса]&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [[Конспекты С++|Лекции прошлого года]]&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D1%8B_%D0%A1%2B%2B&amp;diff=529</id>
		<title>Конспекты С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9A%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D1%8B_%D0%A1%2B%2B&amp;diff=529"/>
				<updated>2011-10-03T17:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
== Задание по C++ ==&lt;br /&gt;
[[Задания по С++]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== 1 семестр (осень-зима 2010) ==&lt;br /&gt;
&lt;br /&gt;
* [[ Как происходит компиляция|Как происходит компиляция. Алексей Давыдов. 08.09.2010]]&lt;br /&gt;
* [[ Указатели и ссылки|Указатели и ссылки. Екатерина Полищук. 10.09.2010]]&lt;br /&gt;
* [[ Динамическое распределение памяти|Динамическое распределение памяти. Алексей Гуревич. 17.09.2010]]&lt;br /&gt;
* [[ Классы|Классы. Курьян Кристина. 08.10.2010]]&lt;br /&gt;
* [[ Перегрузка операторов|Перегрузка операторов. Мария Фомкина. 12.11.2010]]&lt;br /&gt;
* [[ Множественное наследование, дружба|Множественное наследование, дружба Евгений Баталов. 02.12.2010]]&lt;br /&gt;
&lt;br /&gt;
== 2 семестр (зима-весна 2011) ==&lt;br /&gt;
&lt;br /&gt;
* [[ Напоминание про inline и static. Синглтон.|Напоминание про inline и static. Синглтон. Екатерина Полищук. 11.02.2011]]&lt;br /&gt;
* [[ STL. Последовательные контейнеры|STL. Последовательные контейнеры. Мария Фомкина. 18.02.2011]]&lt;br /&gt;
* [[ Ассоциативные контейнеры |STL. Ассоциативные контейнеры. Светлана Марченко. 25.02.2011]]&lt;br /&gt;
* [[ Итераторы и алгоритмы | Итераторы и алгоритмы. Всеволод Опарин. 04.03.2011]]&lt;br /&gt;
* [[ Функторы. Namespaces | Функторы. Namespaces. Иван Близнец. 09.03.2011 ]]&lt;br /&gt;
* [[ Указатели на функции|Указатели на функции. Курьян Кристина. 18.03.2011]]&lt;br /&gt;
* [[ Исключения | Методы обработки ошибок. Исключения. Гарантии исключений. Евгений Баталов. 01.04.2011 ]]&lt;br /&gt;
* [[ Приведение типов. RTTI | Приведение типов. RTTI. Алексей Гуревич. 15.04.2011 ]]&lt;br /&gt;
* [[ Перегрузка операторов new и delete. Павел Синай ]]&lt;br /&gt;
* [[ Обзор библиотеки Boost ]]&lt;br /&gt;
* [[ Метапрограммирование на C++ | Метапрограммирование на C++. Александр Карташов. 06.05.2011 ]]&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=528</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=528"/>
				<updated>2011-10-03T17:38:09Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: /* Полезные ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* [[Конспекты С++|Лекции прошлого года]]&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=527</id>
		<title>SE Wiki</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=527"/>
				<updated>2011-10-03T17:36:34Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Учебная информация ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; style=&amp;quot;line-height:1.2em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|'''5 курс'''&lt;br /&gt;
|-&lt;br /&gt;
|'''Предмет'''||&amp;amp;nbsp;||'''CS'''||'''SE'''||'''BIO'''||'''Пар'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Материалы курса С++|C++]]||||x||x||x||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Алгоритмы и структуры данных|Алгоритмы и структуры данных]]||||x||x|||x||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Комбинаторика|Комбинаторика]]||||x||x|||x||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Теория графов|Теория графов]]||||x||x|||x||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Структурная теория сложности|Структурная теория сложности]]||||x||||||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Конструктивная криптография|Конструктивная криптография]]||||x||||||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Теор. семинар|Теор. семинар]]||||x||||||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Алгебраические структуры|Алгебраические структуры]]||||x||x||||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Мат. логика|Мат. логика]]||||x||x||||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Материалы курса &amp;quot;Операционные системы&amp;quot;|Операционные системы]] ||||||x||||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Темы семинаров|Технол. семинар]]||||||x||||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Базы данных|Базы данных]]||||||x||x||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Материалы курса &amp;quot;Unix и Скриптовые языки&amp;quot;|Unix / Скриптовые языки]]||||||x||x||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Биол. базы данных|Биол. базы данных]]||||||||x||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Молек. биолог|Молек. биолог]]||||||||x||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Био технол.|Био технол.]]||||||||x||1&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|'''6 курс'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Доп. главы дискретной математики]]||||x||x||||0.5&lt;br /&gt;
|-&lt;br /&gt;
|[[Виртуальные машины|Вирт. машины]]||||||x||||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Параллельные и распределенные вычисления|Парал. и расп. вычисления]]||||||x||||1/0.5&lt;br /&gt;
|-&lt;br /&gt;
|[[Материалы курса &amp;quot;Операционные системы&amp;quot;|Операционные системы]] ||||||x||||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Software Design|Software Design]]||||||x||||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Материалы курса &amp;quot;Сетевые технологии&amp;quot;|Сетевые технологии]]||||||x||||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Функциональное программирование|Функциональное программирование]]||||||x||||1/1&lt;br /&gt;
|-&lt;br /&gt;
|[[Эффективные алгоритмы|Эффективные алгоритмы]]||||x||||||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Спец. семинар|Спец. семинар]]||||x||||||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Теор. семинар|Теор. семинар]]||||x||||||1&lt;br /&gt;
|-&lt;br /&gt;
|[[Конструктивная криптография]]||||x||||||1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Практики ==&lt;br /&gt;
* [[ Темы практик |Темы практик, весна 2011-го года]]&lt;br /&gt;
* [[Темы практик, 5SE, осень 2011-го года ]]&lt;br /&gt;
&lt;br /&gt;
== Студенты ==&lt;br /&gt;
* [[2010|Набор 2010-го года (группа 604)]]&lt;br /&gt;
* [[2011|Набор 2011-го года]]&lt;br /&gt;
== Важные ссылки ==&lt;br /&gt;
Для 6-го курса:&lt;br /&gt;
* [http://code.google.com/p/hpcource/ hpcource] - репозиторий для лабораторных по параллельному программированию.&lt;br /&gt;
* [http://code.google.com/p/aptu-os/source/checkout aptu-os] - репозиторий для лабораторных по операционным системам.&lt;br /&gt;
* [http://code.google.com/p/mathvm/ mathvm] - репозиторий для лабораторных по виртуальным машинам.&lt;br /&gt;
* [http://code.google.com/p/spbau-network-2011/source/checkout spbau-network-2011] -  репозиторий для лабораторных по сетевым технологиям.&lt;br /&gt;
&lt;br /&gt;
== Дополнительно == &lt;br /&gt;
* [[Q&amp;amp;A]]&lt;br /&gt;
* [[Мероприятия]]&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=526</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=526"/>
				<updated>2011-10-03T17:35:43Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Стандарт оформления кода ==&lt;br /&gt;
Статья на википедии http://en.wikipedia.org/wiki/Coding_conventions . Там ссылки на разные гайды, посмотрите, выберите какой-нибудь и следуйте ему.&amp;lt;br/&amp;gt;&lt;br /&gt;
Неплохие стандарты [http://geosoft.no/development/cppstyle.html GeoSoft], [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google].&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=525</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=525"/>
				<updated>2011-10-03T17:02:43Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=524</id>
		<title>Материалы курса С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%9C%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BA%D1%83%D1%80%D1%81%D0%B0_%D0%A1%2B%2B&amp;diff=524"/>
				<updated>2011-10-03T17:02:31Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: Новая страница: «== Язык программирования C++ ==  == Рекомендуемая литература == * &amp;quot;Философия С++. Введение в станд…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Язык программирования C++ ==&lt;br /&gt;
&lt;br /&gt;
== Рекомендуемая литература ==&lt;br /&gt;
* &amp;quot;Философия С++. Введение в стандартный С++&amp;quot;, Брюс Эккель&lt;br /&gt;
* &amp;quot;Язык программирования С++&amp;quot;, Бьерн Страуструп&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
* http://cplusplus.com/reference хороший справочник по стандартной библиотеке C++&lt;br /&gt;
* http://www.cprogramming.com/tutorial.html статьи на разные темы&lt;br /&gt;
* http://alenacpp.blogspot.com/ блог о C++&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=220</id>
		<title>Задания по С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=220"/>
				<updated>2011-05-13T17:09:26Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: /* Лабораторная работа №12 метапрограммирование smart_print */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лабораторная работа №1 Шаблоны ==&lt;br /&gt;
Реализовать собственный контейнер &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename T&amp;gt;&lt;br /&gt;
class Container {&lt;br /&gt;
public:&lt;br /&gt;
    void push_back(const T&amp;amp; t);&lt;br /&gt;
    T&amp;amp; back();&lt;br /&gt;
    size_t size() const;&lt;br /&gt;
};&amp;lt;/source&amp;gt;&lt;br /&gt;
В качестве хранилища значенией в реализации &amp;lt;code&amp;gt;Container&amp;lt;/code&amp;gt; используйте &amp;lt;code&amp;gt;std::vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - тип хранилища, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::list&amp;lt;int&amp;gt; &amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - шаблон, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::deque&amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №2 Синглтон ==&lt;br /&gt;
&lt;br /&gt;
Написать простой логгер&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;class Logger {&lt;br /&gt;
public:&lt;br /&gt;
    void warn(const std::string&amp;amp; msg);&lt;br /&gt;
    static Logger&amp;amp; getInstance();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Запретить пользователю его создание, копирование.&lt;br /&gt;
&lt;br /&gt;
Пример использования&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Logger&amp;amp; log = Logger::getInstance();&lt;br /&gt;
log.warn(&amp;quot;Ooops&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Представить, что понадобилось ещё несколько синглтонов, вынести общий для всех синглтонов код в отдельный класс &amp;lt;code&amp;gt;Singleton&amp;lt;/code&amp;gt;.&lt;br /&gt;
Реализовать логгер с использованием класса &amp;lt;code&amp;gt;Singleton&amp;lt;/code&amp;gt; так, чтоб код, использующий логгер, не надо было модифицировать.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №3 merge sort ==&lt;br /&gt;
Необходимо написать функцию сортировки слиянием.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сигнатура функции должны быть такой:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename Iter&amp;gt;&lt;br /&gt;
std::list&amp;lt;typename Iter::value_type&amp;gt; mergeSort(Iter left, Iter right);&amp;lt;/source&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо добиться, чтоб можно было сортировать по указателям:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;int* array = new int[SIZE];&lt;br /&gt;
mergeSort(array, array + SIZE);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Рекомендации'': для merge можно воспользоваться &amp;lt;code&amp;gt;std::list::merge&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
для получения типа, на который указывает указатель, можно воспользоваться &amp;lt;code&amp;gt;std::iterator_traits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №4 iterator ==&lt;br /&gt;
Написать шаблонный класс &amp;lt;code&amp;gt;slist&amp;lt;/code&amp;gt; односвязный список.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename _Ty&amp;gt;&lt;br /&gt;
class slist {&lt;br /&gt;
public:&lt;br /&gt;
  push_back(const _Ty&amp;amp;);&lt;br /&gt;
  forward begin();&lt;br /&gt;
  forward end();&lt;br /&gt;
  slist();&lt;br /&gt;
  _Ty back() const;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Реализовать для него &amp;lt;code&amp;gt;forward&amp;lt;/code&amp;gt; итератор.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №5 functor ==&lt;br /&gt;
Реализовать алгоритм &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
template&amp;lt;typename InIter, typename OutIter, typename Pred&amp;gt;&lt;br /&gt;
OutIter filter(InIter begin, InIter end, OutIter out, Pred pred);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
который читает элементы и, если &amp;lt;code&amp;gt;pred(val)&amp;lt;/code&amp;gt; возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, то записывает элемент в &amp;lt;code&amp;gt;out&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Реализовать собственный функтор, который принимает &amp;lt;code&amp;gt;std::set&amp;lt;char&amp;gt;&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; и проверят наличие входного символа в сете.&lt;br /&gt;
С помощью алгоритма &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; и вашего функтора отфильровать строку.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №6 mem_fun ==&lt;br /&gt;
Реализовать аналог &amp;lt;code&amp;gt;std::mem_fun&amp;lt;/code&amp;gt;, убедиться, что аналог работает на коде:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::vector&amp;lt;char&amp;gt; v;&lt;br /&gt;
std::set&amp;lt;int&amp;gt; s;&lt;br /&gt;
mem_fun(&amp;amp;std::vector&amp;lt;char&amp;gt;::push_back)(v, 'd');&lt;br /&gt;
mem_fun(&amp;amp;std::set&amp;lt;int&amp;gt;::count)(s, 3);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №7 заполнитель мапы ==&lt;br /&gt;
Реализовать заполнитель мапы&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::map&amp;lt;float, int&amp;gt; m(mapper(1.0, 2)(2, 2)(4, 2));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №8-9 класс матрицы ==&lt;br /&gt;
Реализовать класс матрицы MxN (с двумя выделениями памяти).&amp;lt;br/&amp;gt;&lt;br /&gt;
Спроектировать его с учётом исключений: безопасный, с декларацией бросаемых исключений.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №10 двойная диспетчерезация ==&lt;br /&gt;
Иногда в больших системах возникает потребность в некоторой бинарной операции, которая полиморфно зависит от типов обоих аргументов.&lt;br /&gt;
&lt;br /&gt;
Пример: пересечение геометрических примитивов. Мы умеем пересекать круги с кругами, прямоугольники с прямоугольниками и прямоугольники с кругами. Нужно реализовать функцию &amp;lt;code&amp;gt;bool intersects(Shape * a, Shape * b);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ваше задание: написать механизм, который позволил бы реализовать двойную диспетчеризацию.&lt;br /&gt;
&lt;br /&gt;
Идея механизма: есть некоторый класс, которые отвечает за диспетчеризацию (диспетчер). У него хранится map, который паре &amp;lt;code&amp;gt;typeid&amp;lt;/code&amp;gt; сопоставляет класс, реализующий функцию &amp;lt;code&amp;gt;intersects&amp;lt;/code&amp;gt;.&lt;br /&gt;
В функции &amp;lt;code&amp;gt;intersects&amp;lt;/code&amp;gt; у диспетчера запрашивается реализация по паре &amp;lt;code&amp;gt;typeid&amp;lt;/code&amp;gt; аргументов. Диспетчер позволяет регистрировать/&lt;br /&gt;
разрегистрировать различные реализации. Если реализации для пересечения двух объектов не нашлось, то функция пересечения кидает исключение.&lt;br /&gt;
&lt;br /&gt;
''Примечание'': сравнивать объеткы &amp;lt;code&amp;gt;type_info&amp;lt;/code&amp;gt; надо с помощью &amp;lt;code&amp;gt;type_info.before(type_info)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;code&amp;gt;intersects&amp;lt;/code&amp;gt; должна быть коммутативна.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №11 операторы new/delete ==&lt;br /&gt;
Перегрузить глобальные операторы &amp;lt;code&amp;gt;new/delete&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;new[]/delete[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Оптимизировать процедуру веделения/освобождения памяти, например, не очищать память при вызове &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;, а кешировать её и отдавать при следующем вызове &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Попробовать реализованный менеджер памяти в каком-нибудь вашем проекте, сравнить времена работы вашей реализации и дефолтной.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №12 метапрограммирование smart_print ==&lt;br /&gt;
Реализовать шаблонную функцию &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
template&amp;lt;typename T&amp;gt;&lt;br /&gt;
void smart_print(const T&amp;amp; arg);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
которая выводит на печать аргумент.&lt;br /&gt;
Если у аргумента есть &amp;lt;code&amp;gt;arg::iterator&amp;lt;/code&amp;gt;, то вывести на печать символ начала коллекции, затем проитерироваться по элементам коллекции и вывести их на печать с помощью &amp;lt;code&amp;gt;smart_print&amp;lt;/code&amp;gt; и в конце символ конца коллекции.&lt;br /&gt;
Иначе просто вывести агрумент на печать.&lt;br /&gt;
&lt;br /&gt;
Результат работы такой функции на списке векторов интов должен выглядить подобным образом&lt;br /&gt;
&amp;lt;code&amp;gt;[ [ 1 2 ] [ 3 ] [ 45 32 ] ]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для этого необходимо воспользоваться бустовыми &amp;lt;code&amp;gt;BOOST_MPL_HAS_XXX_TRAIT_DEF&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;enable_if_c/disable_if_c&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=219</id>
		<title>Задания по С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=219"/>
				<updated>2011-05-13T17:07:37Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лабораторная работа №1 Шаблоны ==&lt;br /&gt;
Реализовать собственный контейнер &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename T&amp;gt;&lt;br /&gt;
class Container {&lt;br /&gt;
public:&lt;br /&gt;
    void push_back(const T&amp;amp; t);&lt;br /&gt;
    T&amp;amp; back();&lt;br /&gt;
    size_t size() const;&lt;br /&gt;
};&amp;lt;/source&amp;gt;&lt;br /&gt;
В качестве хранилища значенией в реализации &amp;lt;code&amp;gt;Container&amp;lt;/code&amp;gt; используйте &amp;lt;code&amp;gt;std::vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - тип хранилища, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::list&amp;lt;int&amp;gt; &amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - шаблон, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::deque&amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №2 Синглтон ==&lt;br /&gt;
&lt;br /&gt;
Написать простой логгер&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;class Logger {&lt;br /&gt;
public:&lt;br /&gt;
    void warn(const std::string&amp;amp; msg);&lt;br /&gt;
    static Logger&amp;amp; getInstance();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Запретить пользователю его создание, копирование.&lt;br /&gt;
&lt;br /&gt;
Пример использования&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Logger&amp;amp; log = Logger::getInstance();&lt;br /&gt;
log.warn(&amp;quot;Ooops&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Представить, что понадобилось ещё несколько синглтонов, вынести общий для всех синглтонов код в отдельный класс &amp;lt;code&amp;gt;Singleton&amp;lt;/code&amp;gt;.&lt;br /&gt;
Реализовать логгер с использованием класса &amp;lt;code&amp;gt;Singleton&amp;lt;/code&amp;gt; так, чтоб код, использующий логгер, не надо было модифицировать.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №3 merge sort ==&lt;br /&gt;
Необходимо написать функцию сортировки слиянием.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сигнатура функции должны быть такой:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename Iter&amp;gt;&lt;br /&gt;
std::list&amp;lt;typename Iter::value_type&amp;gt; mergeSort(Iter left, Iter right);&amp;lt;/source&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо добиться, чтоб можно было сортировать по указателям:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;int* array = new int[SIZE];&lt;br /&gt;
mergeSort(array, array + SIZE);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Рекомендации'': для merge можно воспользоваться &amp;lt;code&amp;gt;std::list::merge&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
для получения типа, на который указывает указатель, можно воспользоваться &amp;lt;code&amp;gt;std::iterator_traits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №4 iterator ==&lt;br /&gt;
Написать шаблонный класс &amp;lt;code&amp;gt;slist&amp;lt;/code&amp;gt; односвязный список.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename _Ty&amp;gt;&lt;br /&gt;
class slist {&lt;br /&gt;
public:&lt;br /&gt;
  push_back(const _Ty&amp;amp;);&lt;br /&gt;
  forward begin();&lt;br /&gt;
  forward end();&lt;br /&gt;
  slist();&lt;br /&gt;
  _Ty back() const;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Реализовать для него &amp;lt;code&amp;gt;forward&amp;lt;/code&amp;gt; итератор.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №5 functor ==&lt;br /&gt;
Реализовать алгоритм &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
template&amp;lt;typename InIter, typename OutIter, typename Pred&amp;gt;&lt;br /&gt;
OutIter filter(InIter begin, InIter end, OutIter out, Pred pred);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
который читает элементы и, если &amp;lt;code&amp;gt;pred(val)&amp;lt;/code&amp;gt; возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, то записывает элемент в &amp;lt;code&amp;gt;out&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Реализовать собственный функтор, который принимает &amp;lt;code&amp;gt;std::set&amp;lt;char&amp;gt;&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; и проверят наличие входного символа в сете.&lt;br /&gt;
С помощью алгоритма &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; и вашего функтора отфильровать строку.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №6 mem_fun ==&lt;br /&gt;
Реализовать аналог &amp;lt;code&amp;gt;std::mem_fun&amp;lt;/code&amp;gt;, убедиться, что аналог работает на коде:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::vector&amp;lt;char&amp;gt; v;&lt;br /&gt;
std::set&amp;lt;int&amp;gt; s;&lt;br /&gt;
mem_fun(&amp;amp;std::vector&amp;lt;char&amp;gt;::push_back)(v, 'd');&lt;br /&gt;
mem_fun(&amp;amp;std::set&amp;lt;int&amp;gt;::count)(s, 3);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №7 заполнитель мапы ==&lt;br /&gt;
Реализовать заполнитель мапы&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::map&amp;lt;float, int&amp;gt; m(mapper(1.0, 2)(2, 2)(4, 2));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №8-9 класс матрицы ==&lt;br /&gt;
Реализовать класс матрицы MxN (с двумя выделениями памяти).&amp;lt;br/&amp;gt;&lt;br /&gt;
Спроектировать его с учётом исключений: безопасный, с декларацией бросаемых исключений.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №10 двойная диспетчерезация ==&lt;br /&gt;
Иногда в больших системах возникает потребность в некоторой бинарной операции, которая полиморфно зависит от типов обоих аргументов.&lt;br /&gt;
&lt;br /&gt;
Пример: пересечение геометрических примитивов. Мы умеем пересекать круги с кругами, прямоугольники с прямоугольниками и прямоугольники с кругами. Нужно реализовать функцию &amp;lt;code&amp;gt;bool intersects(Shape * a, Shape * b);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ваше задание: написать механизм, который позволил бы реализовать двойную диспетчеризацию.&lt;br /&gt;
&lt;br /&gt;
Идея механизма: есть некоторый класс, которые отвечает за диспетчеризацию (диспетчер). У него хранится map, который паре &amp;lt;code&amp;gt;typeid&amp;lt;/code&amp;gt; сопоставляет класс, реализующий функцию &amp;lt;code&amp;gt;intersects&amp;lt;/code&amp;gt;.&lt;br /&gt;
В функции &amp;lt;code&amp;gt;intersects&amp;lt;/code&amp;gt; у диспетчера запрашивается реализация по паре &amp;lt;code&amp;gt;typeid&amp;lt;/code&amp;gt; аргументов. Диспетчер позволяет регистрировать/&lt;br /&gt;
разрегистрировать различные реализации. Если реализации для пересечения двух объектов не нашлось, то функция пересечения кидает исключение.&lt;br /&gt;
&lt;br /&gt;
''Примечание'': сравнивать объеткы &amp;lt;code&amp;gt;type_info&amp;lt;/code&amp;gt; надо с помощью &amp;lt;code&amp;gt;type_info.before(type_info)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;code&amp;gt;intersects&amp;lt;/code&amp;gt; должна быть коммутативна.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №11 операторы new/delete ==&lt;br /&gt;
Перегрузить глобальные операторы &amp;lt;code&amp;gt;new/delete&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;new[]/delete[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Оптимизировать процедуру веделения/освобождения памяти, например, не очищать память при вызове &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;, а кешировать её и отдавать при следующем вызове &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Попробовать реализованный менеджер памяти в каком-нибудь вашем проекте, сравнить времена работы вашей реализации и дефолтной.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №12 метапрограммирование smart_print ==&lt;br /&gt;
Реализовать шаблонную функцию &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
template&amp;lt;typename T&amp;gt;&lt;br /&gt;
void smart_print(const T&amp;amp; arg);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
которая выводит на печать аргумент.&lt;br /&gt;
Если у аргумента есть &amp;lt;code&amp;gt;arg::iterator&amp;lt;/code&amp;gt;, то вывести на печать символ начала коллекции, затем проитерироваться по элементам коллекции и вывести их на печать с помощью &amp;lt;code&amp;gt;smart_print&amp;lt;/code&amp;gt;.&lt;br /&gt;
Иначе просто вывести агрумент на печать.&lt;br /&gt;
&lt;br /&gt;
Результат работы такой функции на списке векторов интов должен выглядить подобным образом&lt;br /&gt;
&amp;lt;code&amp;gt;[ [ 1 2 ] [ 3 ] [ 45 32 ] ]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для этого необходимо воспользоваться бустовыми &amp;lt;code&amp;gt;BOOST_MPL_HAS_XXX_TRAIT_DEF&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;enable_if_c/disable_if_c&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=182</id>
		<title>Задания по С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=182"/>
				<updated>2011-04-13T06:51:02Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: /* Лабораторная работа №8 класс матрицы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лабораторная работа №1 Шаблоны ==&lt;br /&gt;
Реализовать собственный контейнер &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename T&amp;gt;&lt;br /&gt;
class Container {&lt;br /&gt;
public:&lt;br /&gt;
    void push_back(const T&amp;amp; t);&lt;br /&gt;
    T&amp;amp; back();&lt;br /&gt;
    size_t size() const;&lt;br /&gt;
};&amp;lt;/source&amp;gt;&lt;br /&gt;
В качестве хранилища значенией в реализации &amp;lt;code&amp;gt;Container&amp;lt;/code&amp;gt; используйте &amp;lt;code&amp;gt;std::vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - тип хранилища, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::list&amp;lt;int&amp;gt; &amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - шаблон, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::deque&amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №2 Синглтон ==&lt;br /&gt;
&lt;br /&gt;
Написать протой логгер&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;class Logger {&lt;br /&gt;
public:&lt;br /&gt;
    void warn(const std::string&amp;amp; msg);&lt;br /&gt;
    static Logger&amp;amp; getInstance();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Запретить пользователю его создание, копирование.&lt;br /&gt;
&lt;br /&gt;
Пример использования&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Logger&amp;amp; log = Logger::getInstance();&lt;br /&gt;
log.warn(&amp;quot;Ooops&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Представить, что понадобилось ещё несколько синглтонов, вынести общий для всех синглтонов код в отдельный класс &amp;lt;code&amp;gt;Singleton&amp;lt;/code&amp;gt;.&lt;br /&gt;
Реализовать логгер с использованием класса &amp;lt;code&amp;gt;Singleton&amp;lt;/code&amp;gt; так, чтоб код, использующий логгер, не надо было модифицировать.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №3 merge sort ==&lt;br /&gt;
Необходимо написать функцию сортировки слиянием.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сигнатура функции должны быть такой:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename Iter&amp;gt;&lt;br /&gt;
std::list&amp;lt;typename Iter::value_type&amp;gt; mergeSort(Iter left, Iter right);&amp;lt;/source&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо добиться, чтоб можно было сортировать по указателям:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;int* array = new int[SIZE];&lt;br /&gt;
mergeSort(array, array + SIZE);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Рекомендации'': для merge можно воспользоваться &amp;lt;code&amp;gt;std::list::merge&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
для получения типа, на который указывает указатель, можно воспользоваться &amp;lt;code&amp;gt;std::iterator_traits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №4 iterator ==&lt;br /&gt;
Написать шаблонный класс &amp;lt;code&amp;gt;slist&amp;lt;/code&amp;gt; односвязный список.&amp;lt;br /&amp;gt;&lt;br /&gt;
Реализовать для него &amp;lt;code&amp;gt;forward&amp;lt;/code&amp;gt; итератор.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №5 functor ==&lt;br /&gt;
Реализовать алгоритм &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
template&amp;lt;typename InIter, typename OutIter, typename Pred&amp;gt;&lt;br /&gt;
OutIter filter(InIter begin, InIter end, OutIter out, Pred pred);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
который читает элементы и, если &amp;lt;code&amp;gt;pred(val)&amp;lt;/code&amp;gt; возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, то записывает элемент в &amp;lt;code&amp;gt;out&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Реализовать собственный функтор, который принимает &amp;lt;code&amp;gt;std::set&amp;lt;char&amp;gt;&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; и проверят наличие входного символа в сете.&lt;br /&gt;
С помощью алгоритма &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; и вашего функтора отфильровать строку.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №6 mem_fun ==&lt;br /&gt;
Реализовать аналог &amp;lt;code&amp;gt;std::mem_fun&amp;lt;/code&amp;gt;, убедиться, что аналог работает на коде:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::vector&amp;lt;char&amp;gt; v;&lt;br /&gt;
std::set&amp;lt;int&amp;gt; s;&lt;br /&gt;
mem_fun(&amp;amp;std::vector&amp;lt;char&amp;gt;::push_back)(v, 'd');&lt;br /&gt;
mem_fun(&amp;amp;std::set&amp;lt;int&amp;gt;::count)(s, 3);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №7 заполнитель мапы ==&lt;br /&gt;
Реализовать заполнитель мапы&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::map&amp;lt;float, int&amp;gt; m(mapper(1.0, 2)(2, 2)(4, 2));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №8-9 класс матрицы ==&lt;br /&gt;
Реализовать класс матрицы MxN (с двумя выделениями памяти).&amp;lt;br/&amp;gt;&lt;br /&gt;
Спроектировать его с учётом исключений: безопасный, с декларацией бросаемых исключений.&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=181</id>
		<title>Задания по С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=181"/>
				<updated>2011-04-13T06:49:51Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лабораторная работа №1 Шаблоны ==&lt;br /&gt;
Реализовать собственный контейнер &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename T&amp;gt;&lt;br /&gt;
class Container {&lt;br /&gt;
public:&lt;br /&gt;
    void push_back(const T&amp;amp; t);&lt;br /&gt;
    T&amp;amp; back();&lt;br /&gt;
    size_t size() const;&lt;br /&gt;
};&amp;lt;/source&amp;gt;&lt;br /&gt;
В качестве хранилища значенией в реализации &amp;lt;code&amp;gt;Container&amp;lt;/code&amp;gt; используйте &amp;lt;code&amp;gt;std::vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - тип хранилища, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::list&amp;lt;int&amp;gt; &amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - шаблон, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::deque&amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №2 Синглтон ==&lt;br /&gt;
&lt;br /&gt;
Написать протой логгер&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;class Logger {&lt;br /&gt;
public:&lt;br /&gt;
    void warn(const std::string&amp;amp; msg);&lt;br /&gt;
    static Logger&amp;amp; getInstance();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Запретить пользователю его создание, копирование.&lt;br /&gt;
&lt;br /&gt;
Пример использования&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Logger&amp;amp; log = Logger::getInstance();&lt;br /&gt;
log.warn(&amp;quot;Ooops&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Представить, что понадобилось ещё несколько синглтонов, вынести общий для всех синглтонов код в отдельный класс &amp;lt;code&amp;gt;Singleton&amp;lt;/code&amp;gt;.&lt;br /&gt;
Реализовать логгер с использованием класса &amp;lt;code&amp;gt;Singleton&amp;lt;/code&amp;gt; так, чтоб код, использующий логгер, не надо было модифицировать.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №3 merge sort ==&lt;br /&gt;
Необходимо написать функцию сортировки слиянием.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сигнатура функции должны быть такой:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename Iter&amp;gt;&lt;br /&gt;
std::list&amp;lt;typename Iter::value_type&amp;gt; mergeSort(Iter left, Iter right);&amp;lt;/source&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо добиться, чтоб можно было сортировать по указателям:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;int* array = new int[SIZE];&lt;br /&gt;
mergeSort(array, array + SIZE);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Рекомендации'': для merge можно воспользоваться &amp;lt;code&amp;gt;std::list::merge&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
для получения типа, на который указывает указатель, можно воспользоваться &amp;lt;code&amp;gt;std::iterator_traits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №4 iterator ==&lt;br /&gt;
Написать шаблонный класс &amp;lt;code&amp;gt;slist&amp;lt;/code&amp;gt; односвязный список.&amp;lt;br /&amp;gt;&lt;br /&gt;
Реализовать для него &amp;lt;code&amp;gt;forward&amp;lt;/code&amp;gt; итератор.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №5 functor ==&lt;br /&gt;
Реализовать алгоритм &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
template&amp;lt;typename InIter, typename OutIter, typename Pred&amp;gt;&lt;br /&gt;
OutIter filter(InIter begin, InIter end, OutIter out, Pred pred);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
который читает элементы и, если &amp;lt;code&amp;gt;pred(val)&amp;lt;/code&amp;gt; возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, то записывает элемент в &amp;lt;code&amp;gt;out&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Реализовать собственный функтор, который принимает &amp;lt;code&amp;gt;std::set&amp;lt;char&amp;gt;&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; и проверят наличие входного символа в сете.&lt;br /&gt;
С помощью алгоритма &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; и вашего функтора отфильровать строку.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №6 mem_fun ==&lt;br /&gt;
Реализовать аналог &amp;lt;code&amp;gt;std::mem_fun&amp;lt;/code&amp;gt;, убедиться, что аналог работает на коде:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::vector&amp;lt;char&amp;gt; v;&lt;br /&gt;
std::set&amp;lt;int&amp;gt; s;&lt;br /&gt;
mem_fun(&amp;amp;std::vector&amp;lt;char&amp;gt;::push_back)(v, 'd');&lt;br /&gt;
mem_fun(&amp;amp;std::set&amp;lt;int&amp;gt;::count)(s, 3);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №7 заполнитель мапы ==&lt;br /&gt;
Реализовать заполнитель мапы&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::map&amp;lt;float, int&amp;gt; m(mapper(1.0, 2)(2, 2)(4, 2));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №8 класс матрицы ==&lt;br /&gt;
Реализовать класс матрицы MxN (с двумя выделениями памяти).&amp;lt;br/&amp;gt;&lt;br /&gt;
Спроектировать его с учётом исключений: безопасный, с декларацией бросаемых исключений.&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=155</id>
		<title>Задания по С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=155"/>
				<updated>2011-03-30T06:56:45Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лабораторная работа №1 Шаблоны ==&lt;br /&gt;
Реализовать собственный контейнер &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename T&amp;gt;&lt;br /&gt;
class Container {&lt;br /&gt;
public:&lt;br /&gt;
    void push_back(const T&amp;amp; t);&lt;br /&gt;
    T&amp;amp; back();&lt;br /&gt;
    size_t size() const;&lt;br /&gt;
};&amp;lt;/source&amp;gt;&lt;br /&gt;
В качестве хранилища значенией в реализации &amp;lt;code&amp;gt;Container&amp;lt;/code&amp;gt; используйте &amp;lt;code&amp;gt;std::vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - тип хранилища, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::list&amp;lt;int&amp;gt; &amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - шаблон, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::deque&amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №2 Синглтон ==&lt;br /&gt;
&lt;br /&gt;
Написать протой логгер&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;class Logger {&lt;br /&gt;
public:&lt;br /&gt;
    void warn(const std::string&amp;amp; msg);&lt;br /&gt;
    static Logger&amp;amp; getInstance();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Запретить пользователю его создание, копирование.&lt;br /&gt;
&lt;br /&gt;
Пример использования&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Logger&amp;amp; log = Logger::getInstance();&lt;br /&gt;
log.warn(&amp;quot;Ooops&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Представить, что понадобилось ещё несколько синглтонов, вынести общий для всех синглтонов код в отдельный класс &amp;lt;code&amp;gt;Singleton&amp;lt;/code&amp;gt;.&lt;br /&gt;
Реализовать логгер с использованием класса &amp;lt;code&amp;gt;Singleton&amp;lt;/code&amp;gt; так, чтоб код, использующий логгер, не надо было модифицировать.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №3 merge sort ==&lt;br /&gt;
Необходимо написать функцию сортировки слиянием.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сигнатура функции должны быть такой:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename Iter&amp;gt;&lt;br /&gt;
std::list&amp;lt;typename Iter::value_type&amp;gt; mergeSort(Iter left, Iter right);&amp;lt;/source&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо добиться, чтоб можно было сортировать по указателям:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;int* array = new int[SIZE];&lt;br /&gt;
mergeSort(array, array + SIZE);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Рекомендации'': для merge можно воспользоваться &amp;lt;code&amp;gt;std::list::merge&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
для получения типа, на который указывает указатель, можно воспользоваться &amp;lt;code&amp;gt;std::iterator_traits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №4 iterator ==&lt;br /&gt;
Написать наблонный класс &amp;lt;code&amp;gt;slist&amp;lt;/code&amp;gt; односвязный список.&amp;lt;br /&amp;gt;&lt;br /&gt;
Реализовать для него &amp;lt;code&amp;gt;forward&amp;lt;/code&amp;gt; итератор.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №5 functor ==&lt;br /&gt;
Реализовать алгоритм &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
template&amp;lt;typename InIter, typename OutIter, typename Pred&amp;gt;&lt;br /&gt;
OutIter filter(InIter begin, InIter end, OutIter out, Pred pred);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
который читает елементы и, если &amp;lt;code&amp;gt;pred(val)&amp;lt;/code&amp;gt; возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, то записывает елемент в &amp;lt;code&amp;gt;out&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Реализовать собственный функтор, который принимает &amp;lt;code&amp;gt;std::set&amp;lt;char&amp;gt;&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; и проверят наличие входного символа в сете.&lt;br /&gt;
С помощью алгоритма &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; и вашего функтора отфильровать строку.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №6 mem_fun ==&lt;br /&gt;
Реализовать аналог &amp;lt;code&amp;gt;std::mem_fun&amp;lt;/code&amp;gt;, убедиться, что аналог работает на коде:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::vector&amp;lt;char&amp;gt; v;&lt;br /&gt;
std::set&amp;lt;int&amp;gt; s;&lt;br /&gt;
mem_fun(&amp;amp;std::vector&amp;lt;char&amp;gt;::push_back)(v, 'd');&lt;br /&gt;
mem_fun(&amp;amp;std::set&amp;lt;int&amp;gt;::count)(s, 3);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №7 заполнитель мапы ==&lt;br /&gt;
Реализовать заполнитель мапы&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::map&amp;lt;float, int&amp;gt; m(mapper(1.0, 2)(2, 2)(4, 2));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=154</id>
		<title>Задания по С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=154"/>
				<updated>2011-03-30T06:40:19Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лабораторная работа №1 ==&lt;br /&gt;
=== Шаблоны ===&lt;br /&gt;
Реализовать собственный контейнер &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename T&amp;gt;&lt;br /&gt;
class Container {&lt;br /&gt;
public:&lt;br /&gt;
    void push_back(const T&amp;amp; t);&lt;br /&gt;
    T&amp;amp; back();&lt;br /&gt;
    size_t size() const;&lt;br /&gt;
};&amp;lt;/source&amp;gt;&lt;br /&gt;
В качестве хранилища значенией в реализации &amp;lt;code&amp;gt;Container&amp;lt;/code&amp;gt; используйте &amp;lt;code&amp;gt;std::vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - тип хранилища, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::list&amp;lt;int&amp;gt; &amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - шаблон, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::deque&amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №2 ==&lt;br /&gt;
=== Синглтон ===&lt;br /&gt;
&lt;br /&gt;
Написать протой логгер&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;class Logger {&lt;br /&gt;
public:&lt;br /&gt;
    void warn(const std::string&amp;amp; msg);&lt;br /&gt;
    static Logger&amp;amp; getInstance();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Запретить пользователю его создание, копирование.&lt;br /&gt;
&lt;br /&gt;
Пример использования&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Logger&amp;amp; log = Logger::getInstance();&lt;br /&gt;
log.warn(&amp;quot;Ooops&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №3 ==&lt;br /&gt;
=== merge sort ===&lt;br /&gt;
Необходимо написать функцию сортировки слиянием.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сигнатура функции должны быть такой:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename Iter&amp;gt;&lt;br /&gt;
std::list&amp;lt;typename Iter::value_type&amp;gt; mergeSort(Iter left, Iter right);&amp;lt;/source&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо добиться, чтоб можно было сортировать по указателям:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;int* array = new int[SIZE];&lt;br /&gt;
mergeSort(array, array + SIZE);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Рекомендации'': для merge можно воспользоваться &amp;lt;code&amp;gt;std::list::merge&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
для получения типа, на который указывает указатель, можно воспользоваться &amp;lt;code&amp;gt;std::iterator_traits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №4 ==&lt;br /&gt;
=== iterator ===&lt;br /&gt;
Написать наблонный класс &amp;lt;code&amp;gt;slist&amp;lt;/code&amp;gt; односвязный список.&amp;lt;br /&amp;gt;&lt;br /&gt;
Реализовать для него &amp;lt;code&amp;gt;forward&amp;lt;/code&amp;gt; итератор.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №5 ==&lt;br /&gt;
=== functor ===&lt;br /&gt;
Реализовать алгоритм &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
template&amp;lt;typename InIter, typename OutIter, typename Pred&amp;gt;&lt;br /&gt;
OutIter filter(InIter begin, InIter end, OutIter out, Pred pred);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
который читает елементы и, если &amp;lt;code&amp;gt;pred(val)&amp;lt;/code&amp;gt; возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, то записывает елемент в &amp;lt;code&amp;gt;out&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Реализовать собственный функтор, который принимает &amp;lt;code&amp;gt;std::set&amp;lt;char&amp;gt;&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; и проверят наличие входного символа в сете.&lt;br /&gt;
С помощью алгоритма &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; и вашего функтора отфильровать строку.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №6 ==&lt;br /&gt;
=== mem_fun ===&lt;br /&gt;
Реализовать аналог &amp;lt;code&amp;gt;std::mem_fun&amp;lt;/code&amp;gt;, убедиться, что аналог работает на коде:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::vector&amp;lt;char&amp;gt; v;&lt;br /&gt;
std::set&amp;lt;int&amp;gt; s;&lt;br /&gt;
mem_fun(&amp;amp;std::vector&amp;lt;char&amp;gt;::push_back)(v, 'd');&lt;br /&gt;
mem_fun(&amp;amp;std::set&amp;lt;int&amp;gt;::count)(s, 3);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №7 ==&lt;br /&gt;
=== mem_fun ===&lt;br /&gt;
Реализовать заполнитель мапы&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
std::map&amp;lt;float, int&amp;gt; m(mapper(1.0, 2)(2, 2)(4, 2));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=153</id>
		<title>Задания по С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=153"/>
				<updated>2011-03-30T06:14:50Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лабораторная работа №1 ==&lt;br /&gt;
=== Шаблоны ===&lt;br /&gt;
Реализовать собственный контейнер &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename T&amp;gt;&lt;br /&gt;
class Container {&lt;br /&gt;
public:&lt;br /&gt;
    void push_back(const T&amp;amp; t);&lt;br /&gt;
    T&amp;amp; back();&lt;br /&gt;
    size_t size() const;&lt;br /&gt;
};&amp;lt;/source&amp;gt;&lt;br /&gt;
В качестве хранилища значенией в реализации &amp;lt;code&amp;gt;Container&amp;lt;/code&amp;gt; используйте &amp;lt;code&amp;gt;std::vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - тип хранилища, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::list&amp;lt;int&amp;gt; &amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - шаблон, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::deque&amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №2 ==&lt;br /&gt;
=== Синглтон ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Написать протой логгер&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;class Logger {&lt;br /&gt;
public:&lt;br /&gt;
    void log(const std::string&amp;amp; msg);&lt;br /&gt;
    static Logger&amp;amp; getInstance();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Запретить пользователю его создание, копирование.&lt;br /&gt;
&lt;br /&gt;
Пример использования&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №3 ==&lt;br /&gt;
=== merge sort ===&lt;br /&gt;
Необходимо написать функцию сортировки слиянием.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сигнатура функции должны быть такой:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename Iter&amp;gt;&lt;br /&gt;
std::list&amp;lt;typename Iter::value_type&amp;gt; mergeSort(Iter left, Iter right);&amp;lt;/source&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо добиться, чтоб можно было сортировать по указателям:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;int* array = new int[SIZE];&lt;br /&gt;
mergeSort(array, array + SIZE);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Рекомендации'': для merge можно воспользоваться &amp;lt;code&amp;gt;std::list::merge&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
для получения типа, на который указывает указатель, можно воспользоваться &amp;lt;code&amp;gt;std::iterator_traits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №4 ==&lt;br /&gt;
=== iterator ===&lt;br /&gt;
Написать наблонный класс &amp;lt;code&amp;gt;slist&amp;lt;/code&amp;gt; односвязный список.&amp;lt;br /&amp;gt;&lt;br /&gt;
Реализовать для него &amp;lt;code&amp;gt;forward&amp;lt;/code&amp;gt; итератор.&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №5 ==&lt;br /&gt;
=== functor ===&lt;br /&gt;
Реализовать алгоритм &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
template&amp;lt;typename InIter, typename OutIter, typename Pred&amp;gt;&lt;br /&gt;
OutIter filter(InIter begin, InIter end, OutIter out, Pred pred);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
который читает елементы и, если &amp;lt;code&amp;gt;pred(val)&amp;lt;/code&amp;gt; возвращает &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, то записывает елемент в &amp;lt;code&amp;gt;out&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Реализовать собственный функтор, который принимает &amp;lt;code&amp;gt;std::set&amp;lt;char&amp;gt;&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt; и проверят наличие входного символа в сете.&lt;br /&gt;
С помощью алгоритма &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; и вашего функтора отфильровать строку.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №6 ==&lt;br /&gt;
=== mem_fun ===&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=139</id>
		<title>Задания по С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=139"/>
				<updated>2011-03-23T08:52:16Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: добавил задание на шалоны&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лабораторная работа №1 ==&lt;br /&gt;
=== Шаблоны ===&lt;br /&gt;
Реализовать собственный контейнер &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename T&amp;gt;&lt;br /&gt;
class Container {&lt;br /&gt;
public:&lt;br /&gt;
    void push_back(const T&amp;amp; t);&lt;br /&gt;
    T&amp;amp; back();&lt;br /&gt;
    size_t size() const;&lt;br /&gt;
};&amp;lt;/source&amp;gt;&lt;br /&gt;
В качестве хранилища значенией в реализации &amp;lt;code&amp;gt;Container&amp;lt;/code&amp;gt; используйте &amp;lt;code&amp;gt;std::vector&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - тип хранилища, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::list&amp;lt;int&amp;gt; &amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - шаблон, используемый в реализации вашего контейнера.&lt;br /&gt;
&lt;br /&gt;
Пример использования такого контейнера&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Container&amp;lt;int, std::deque&amp;gt; c;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №2 ==&lt;br /&gt;
=== Синглтон ===&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Написать протой логгер&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;class Logger {&lt;br /&gt;
public:&lt;br /&gt;
    void log(const std::string&amp;amp; msg);&lt;br /&gt;
    static Logger&amp;amp; getInstance();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Запретить пользователю его создание, копирование.&lt;br /&gt;
&lt;br /&gt;
Пример использования&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Лабораторная работа №3 ==&lt;br /&gt;
&lt;br /&gt;
=== merge sort ===&lt;br /&gt;
Необходимо написать функцию сортировки слиянием.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сигнатура функции должны быть такой:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;template&amp;lt;typename Iter&amp;gt;&lt;br /&gt;
std::list&amp;lt;typename Iter::value_type&amp;gt; mergeSort(Iter left, Iter right);&amp;lt;/source&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо добиться, чтоб можно было сортировать по указателям:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;int* array = new int[SIZE];&lt;br /&gt;
mergeSort(array, array + SIZE);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Рекомендации'': для merge можно воспользоваться &amp;lt;code&amp;gt;std::list::merge&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
для получения типа, на который указывает указатель, можно воспользоваться &amp;lt;code&amp;gt;std::iterator_traits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №4 ==&lt;br /&gt;
&lt;br /&gt;
Задание&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №5 ==&lt;br /&gt;
&lt;br /&gt;
Задание&lt;br /&gt;
&lt;br /&gt;
== To be continued ==&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=122</id>
		<title>Задания по С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=122"/>
				<updated>2011-03-18T10:46:21Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лабораторная работа №1 ==&lt;br /&gt;
&lt;br /&gt;
Задание&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №2 ==&lt;br /&gt;
&lt;br /&gt;
Задание&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №3 ==&lt;br /&gt;
&lt;br /&gt;
=== Задание merge sort ===&lt;br /&gt;
Необходимо написать функцию сортировки слиянием.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сигнатура функции должны быть такой:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;template&amp;lt;typename Iter&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
std::list&amp;lt;typename Iter::value_type&amp;gt; mergeSort(Iter left, Iter right);&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо добиться, чтоб можно было сортировать по указателям:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;int* array = new int[SIZE];&amp;lt;br /&amp;gt;&lt;br /&gt;
mergeSort(array, array + SIZE);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Рекомендации'': для merge можно воспользоваться &amp;lt;code&amp;gt;std::list::merge&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
для получения типа, на который указывает указатель, можно воспользоваться &amp;lt;code&amp;gt;std::iterator_traits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №4 ==&lt;br /&gt;
&lt;br /&gt;
Задание&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №5 ==&lt;br /&gt;
&lt;br /&gt;
Задание&lt;br /&gt;
&lt;br /&gt;
== To be continued ==&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=121</id>
		<title>Задания по С++</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%A1%2B%2B&amp;diff=121"/>
				<updated>2011-03-18T10:45:23Z</updated>
		
		<summary type="html">&lt;p&gt;Btv: добавил задание merge sort&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Лабораторная работа №1 ==&lt;br /&gt;
&lt;br /&gt;
Задание&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №2 ==&lt;br /&gt;
&lt;br /&gt;
Задание&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №3 ==&lt;br /&gt;
&lt;br /&gt;
=== Задание merge sort ===&lt;br /&gt;
Необходимо написать функцию сортировки слиянием.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сигнатура функции должны быть такой:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;template&amp;lt;typename Iter&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
std::list&amp;lt;typename Iter::value_type&amp;gt; mergeSort(Iter left, Iter right);&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо добиться, чтоб можно было сортировать по указателям:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;int* array = new int[SIZE];&amp;lt;br /&amp;gt;&lt;br /&gt;
mergeSort(array, array + SIZE);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Рекомендации'': для merge можно воспользоваться &amp;lt;code&amp;gt;std::list::merge&amp;lt;/code&amp;gt;&lt;br /&gt;
для получения типа, на который указывает указатель, можно воспользоваться &amp;lt;code&amp;gt;std::iterator_traits&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №4 ==&lt;br /&gt;
&lt;br /&gt;
Задание&lt;br /&gt;
&lt;br /&gt;
== Лабораторная работа №5 ==&lt;br /&gt;
&lt;br /&gt;
Задание&lt;br /&gt;
&lt;br /&gt;
== To be continued ==&lt;/div&gt;</summary>
		<author><name>Btv</name></author>	</entry>

	</feed>