Стандартная библиотека C++ (2015)

А можно в следующий раз, когда мы будем решать какую-нибудь задачу, сделать так, чтоб input и output полностью были видны с самого начала (потому что в таком случае не приходится сидеть 6 часов и гадать, а где у меня может быть ошибка, если на 2 совершенно разных компиляторах все прекрасно, а в этой системе нет), а не когда отправляется уже верное решение по какому-нибудь тесту. Думаю, что полный текст теста и его решения в момент, когда происходит поиск ошибок, будет полезнее, чем полный текст, когда предполагается, что задача и без того верно решена.

Расписание на ближайшее время. Указывайте свою фамилию в строке, соответственно таймслоту, чтобы зарезервировать время. Принимать задачи буду в 320. Прошу впустую время не бронировать!

А можно в следующий раз поменьше ворчать Ярослав? Вы как тот смурфик из мультика.

Нельзя, т.к. большие файлы она не показывает.

ejudge ничего не компилирует. Это делает компилятор! И если у Вас полный тест, оказался неполный то не стоит винить ejudge. Примите правила игры и соблюдайте их.

Внимание! В расписании прошу указывать количество задач уже готовых к сдаче. Если Ваших в планах есть доделывание и сдача задачи, то это не надо вносить в расписание. Только по факту. Задача готова, пошел(а) и записался.

Прошу всех кто уже записан на 24-25.12 указать кол-во задач. При этом можно записать 2 человека на одно время по 1 графовой задаче каждый.

PS: Это условие связано с тем, что есть люди с готовыми задачами, которым нет место в расписании. Это неправильно.

Помнится все до единого писали лексикографическое сравнение через набор if в одной из наших задач. Вот нашел элегантный способ сделать это красивее. Читайте про std::tie.

Единственное что меня смущает так это то, что этот tie только для структур. Видимо, имеется ввиду, что классы с паблик полями тоже подойдут, а то иначе между классами и структурами получится больше чем известные всем два отличия.

Это наверняка уже решили, и было это довольно давно, но мне сразу бросились в глаза строка (и подобная ниже):

const char* s1 = time_str.substr(0, 2).c_str();
int hour = atoi(s1);

Очевидно же, что тут s1 внутри вызова atoi указывает на уже освобожденную память. substr(...) возвращает строку, которая в той же строке кода и уничтожается после c_str(). Отсюда и разное поведение на разных компиляторах.

Правильно было бы так:

std::string s1 = time_str.substr(0, 2);
int hour = atoi(s1.c_str());

А вообще, раз вы тут уже и С++ 11 используете, то существуют аналоги stoi, stof и подобные, которые принимают не указатель на char, а собственно string…

Не удержался:smile:

1 лайк

А ссылку на оригинальный пост? Эта тема абсолютный рекордсмен по количеству постов на этом форуме, видимо движок форума работает на пределе и местный поиск выдает, что atoi в рамках этой темы только в Вашем посте встречается. А еще говорили, что это ультрасовременный хипстерский форумный движок …

ИМХО, надо грядущие консультации посвятить еще всяким полезностям из std utility :smile:

В смысле? Какая ему разница, какие поля ему передают, если он испольюзуется внутри функции-члена или friend-функции?

https://ideone.com/aeydT1 - все Ok

Там картинка)

2 лайка

Будущие консультации будут посвящены пройденному материалу. Что логично и законно.

1 лайк

Роман Борисович, а когда будет готова программа/вопросы к экзамену?

У меня завтра будет возможность поработать над тем и другим. Так что заглядывайте сюда завтра вечерком.

Итак, Программа экзамена по С++ 2015.pdf . Если у кого-то есть уверенность, что на лекциях не рассматривали vector, а он есть в программке, или что рассматривали map, но его нет в программке, то замечания по программе принимаются на первой консультации. Соответственно, вечером в понедельник программа экзамена может изменится, но это уже будет окончательный вариант. Форму экзамена тоже обсудим на первой консультации.

Внимание! Время консультаций изменяем на 18:10, а экзамена на 9:00. Аудитории без изменений.

На первой консультации я говорил, что постараюсь перенести экзамен в ауд. 316. Деканат дал добро.

Граждане студенты, внесите, пожалуйста, описания практических задач, которые я вам на экзамене формулировал в гугл-документ.

Добор баллов состоится 18.02. Сдача задач: 14:30-15:30. Если не успеете: 16:30-17:00. Аудитория предположительно 320.

Экзамен по расписанию 25.02.

Итак, я нашел свободную аудиторию 315 на 13:45. Таким образом, мы 27.02 проводим лекцию и практику.

Собираю решение у себя с помощью g++5.1 => все без проблем.

Кидаю на ejudge: g++4.8 и clang++3.6 восемь раз высказывали мне все, что они думают о c++11… Может, стоит их обновить?

g++ отверг все попытки поперемещать потоки ввода-вывода внутрь заготовленной обертки, а clang сперва ругался на abs(long long), пытаясь интерпретировать как abs(float) или abs(double), После не дал использовать перегруженный оператор вывода в поток:

string to_string(const Fraction& val){
    return std::to_string(val.numerator) + "/" + std::to_string(val.denumerator);
}

ostream& operator << (ostream& out, const Fraction& val){
    out << to_string(val);
    return out;
}

clang выплюнул такую непонятность:

src/Fraction.o: In function `Fractions::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, Fractions::Fraction const&)':
src/Fraction.cpp:(.text+0x69d): undefined reference to `std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<< <char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Заставить собрать-то удалось, но путем отказа от использования всего запланированного…

У нашей версии кланга проблемы со стандартной библиотекой. Я это и раньше знал и Ваши слова это подтверждают. Про гцц не знаю, что не так. Обновить думаю можно. Но хочу напомнить, что включить опцию с++1у не удалось в прошлый раз. Хотя обновление может исправить эту ситуацию.

Про отсутствие move-конструкторов у потоковых классов в libstdc++ это известная проблема, легко находится на StackOverflow: решена в версии 5+ GCC.