Как можно сделать это для обобщенного типа? Можно ли как-то выкрутиться?!?
void print()
{
std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout));
}
Как можно сделать это для обобщенного типа? Можно ли как-то выкрутиться?!?
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 из каждой темы, но желательно это на практике с преподавателем обсудить.
Почему-то я думала, что для итераторов нет обобщенных типов…
Максим Валентинович, а программку курса можно?
Можно: примерная программа курса. Только смысла в ней особого нет – вопросов в том виде, в котором они будут в билетах, программа не содержит, а знать нужно то, что было на лекциях. Поэтому фразы вида «Этого вопроса не было в программе!» не принимаются.
Название неправильное! Должно быть «Алгоритмы и структуры данных».
Программа имеет ровно тот же смысл, что и конспект лекций – что по программе учить, что по конспекту. А билеты публиковать не буду – их всё равно с прошлого года переделывать надо.
Примера билета нет – вариантов билетов немного, поэтому публиковать даже один билет смысла не вижу, только материал для шпаргалок давать.
В билетах будет две части. В первой – вопросы с вариантами на выбор, например, “Какие операции не поддерживают бинарные кучи?”, и на выбор – “Вставку элемента/Извлечение элемента по индексу/Слияние двух куч/Извлечение минимального (максимального)”. Как видно из этого вопроса, правильный ответ может содержать два варианта из четырёх – допускается множественный выбор. Таких вопросов будет много, примерно 15-20.
Вторая часть билета – обычные вопросы вида “Опишите алгоритм извлечения элемента из бинарной кучи”, “Опишите эвристику стоп-символа” и прочее. Ответы небольшие, вопросов около десятка.
Ничего страшного, у нас всё коммутативно, а Вирт вообще даже плюсовать не стеснялся. Хотя поменяю, конечно, а то мало ли…
Напоминаю, что завтра, 13 июня, перед консультацией состоится добор баллов. Сбор ориентировочно около ауд. 210, в 15:00. А уж консультация по расписанию.
Деревьев рекурсии не было на лекциях. А в программе есть. Говорят, нельзя так делать.
А кто такую ерунду говорит, интересно?
Все нормальные преподаватели.
Дерево рекурсии – всего-навсего иллюстрация метода подстановки. Цитата: «Процесс подстановки соотношения в себя можно изобразить в виде дерева рекурсии (recursion tree).» То есть ничего принципиально нового тут нет.
По поводу «Говорят…» – ну да, печально. Мне кажется, это самая отвратительная оценка для работы преподавателя, когда появляются замечания вида «говорят, что…». Это как бы заявление вида «я не хочу разбираться, что вы тут в курсе рассказывали, знающие люди сказали, что…». Давайте так: приходите на консультацию и доказываете, что «нельзя так делать» – получаете тут же 100 баллов за курс. А иначе это всё звучит довольно легковесно.
@MB, 100 баллов за курс я получу на экзамене, а тратить время консультации на бесполезные разбирательства вы и сами не желаете. Я воспользовался “Говорят”, как раз чтобы показать свою безучастность к ситуации но обеспокоенность: в трёх конспектах я не нашёл упоминание термина, а значение в таком контексте мне бы и не пришло в голову.
Спасибо, что отреагировали.
М-да, ну никак Вас не заставишь активность проявлять, ни «кнутом», ни «пряником». Даже возможность получения дополнительных баллов или автомата почти не вызвала активности студентов, жаль. А просто 100 баллов за курс по результатам экзамена – ну вот, теперь мне придётся что-нибудь придумывать на экзамене, чтобы анонимность при проверке обеспечить, для чистоты эксперимента.