(2 курс ФИИТ) Алгоритмы и структуры данных

Как можно сделать это для обобщенного типа? Можно ли как-то выкрутиться?!?

void print()
{
	std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout));
}
template <typename T>
void print()
{
	std::copy(a.begin(), a.end(), std::ostream_iterator<T>(std::cout));
}

Вызывать так:

print<имя_типа>();

Для int, например, будет:

print<int>();

Да, @Casey прав, для обобщенного типа – шаблоном. Могу предложить еще один вариант, с перегрузкой оператора вывода в поток:

template <typename T>
ostream & operator<<(ostream & out, const T & a)
{
    std::copy(a.begin(), a.end(), std::ostream_iterator<T::value_type>(out," "));
    return out;
}
...
std::vector<int> a;
...
std::cout << a;

После определения можете использовать обычный оператор помещения в поток, но у меня такой стиль вызывает опасения – очень уж общий, может вызвать проблемы.

@MB вместо T::value_type лучше typename std::iteratot_traits<T>::value_type, тогда ещё и для массивов будет работать и появится возможность для своих типов-контейнеров внешним образом определять, что за тип элемента в контейнере.

Можно уточнить, а на codeforces сколько заданий из 15 надо сделать?

@pletnev_alexander, вообще говоря – минимум по 2 из каждой темы, но желательно это на практике с преподавателем обсудить.

Почему-то я думала, что для итераторов нет обобщенных типов…

Максим Валентинович, а программку курса можно?

Можно: примерная программа курса. Только смысла в ней особого нет – вопросов в том виде, в котором они будут в билетах, программа не содержит, а знать нужно то, что было на лекциях. Поэтому фразы вида «Этого вопроса не было в программе!» не принимаются.

Название неправильное! Должно быть «Алгоритмы и структуры данных».

@MB, а пример экзаменационного билета есть? Раз уж программа смысла не имеет.

Программа имеет ровно тот же смысл, что и конспект лекций – что по программе учить, что по конспекту. А билеты публиковать не буду – их всё равно с прошлого года переделывать надо.

Примера билета нет – вариантов билетов немного, поэтому публиковать даже один билет смысла не вижу, только материал для шпаргалок давать.

В билетах будет две части. В первой – вопросы с вариантами на выбор, например, “Какие операции не поддерживают бинарные кучи?”, и на выбор – “Вставку элемента/Извлечение элемента по индексу/Слияние двух куч/Извлечение минимального (максимального)”. Как видно из этого вопроса, правильный ответ может содержать два варианта из четырёх – допускается множественный выбор. Таких вопросов будет много, примерно 15-20.

Вторая часть билета – обычные вопросы вида “Опишите алгоритм извлечения элемента из бинарной кучи”, “Опишите эвристику стоп-символа” и прочее. Ответы небольшие, вопросов около десятка.

Ничего страшного, у нас всё коммутативно, а Вирт вообще даже плюсовать не стеснялся. Хотя поменяю, конечно, а то мало ли…

Напоминаю, что завтра, 13 июня, перед консультацией состоится добор баллов. Сбор ориентировочно около ауд. 210, в 15:00. А уж консультация по расписанию.

Деревьев рекурсии не было на лекциях. А в программе есть. Говорят, нельзя так делать.

А кто такую ерунду говорит, интересно?

Все нормальные преподаватели.

Дерево рекурсии – всего-навсего иллюстрация метода подстановки. Цитата: «Процесс подстановки соотношения в себя можно изобразить в виде дерева рекурсии (recursion tree).» То есть ничего принципиально нового тут нет.

По поводу «Говорят…» – ну да, печально. Мне кажется, это самая отвратительная оценка для работы преподавателя, когда появляются замечания вида «говорят, что…». Это как бы заявление вида «я не хочу разбираться, что вы тут в курсе рассказывали, знающие люди сказали, что…». Давайте так: приходите на консультацию и доказываете, что «нельзя так делать» – получаете тут же 100 баллов за курс. А иначе это всё звучит довольно легковесно.

@MB, 100 баллов за курс я получу на экзамене, а тратить время консультации на бесполезные разбирательства вы и сами не желаете. Я воспользовался “Говорят”, как раз чтобы показать свою безучастность к ситуации но обеспокоенность: в трёх конспектах я не нашёл упоминание термина, а значение в таком контексте мне бы и не пришло в голову.

Спасибо, что отреагировали.

М-да, ну никак Вас не заставишь активность проявлять, ни «кнутом», ни «пряником». Даже возможность получения дополнительных баллов или автомата почти не вызвала активности студентов, жаль. А просто 100 баллов за курс по результатам экзамена – ну вот, теперь мне придётся что-нибудь придумывать на экзамене, чтобы анонимность при проверке обеспечить, для чистоты эксперимента.