потому что набрал много символов и не понимаю почему это не можно сократить.
Обьясните, пожалуйста, почему более логично когда pop_back на пустом векторе бросает исключение, а не просто ничего не делает?
Хотелось бы или чтобы он ничего не делал, или чтобы был метод std::vector::pop_back_or_none. Это у меня одного такие странные хотелки или кто-то еще так думает?
#define p(v) if (!v.empty()) v.pop_back();
Нафиг не надо. Ибо 1) это делается на раз функцией в 2 строчки; 2) нехрен использовать исключения для управления логикой исполнения.
У джосатиса было объяснение по поводу лапидарности и unsafe-ности дизайна контейнеров STL. Если вкратце - была дилемма между безопссностью и производительностью. Выбрали втлрое, чтобы программист мог сам строить более безопасные абстракции с нужным уровнем оверхеда, а другие, у которых граничные случаи не встречаются, не платили за ненужные для них проверки
Обсуждают сегодня