242 страницы. Альпина нон-фикшн, 2021
Небольшая интересная книга с необычной обложкой.
Содержание:
Возможно, самая большая проблема книги — то, что название не совпадает с содержанием. Вернее было бы сказать «Объясняя новости науки». Нас трижды предупреждали ещё в аннотации, но мы не слушали.
Дан ряд целых чисел \(a_i \geqslant 0,\) \(i=\overline{1,n}\). Числа символизируют высоту стен. Сверху идёт дождь, и вода скапливается в ячейках между стенами. В каждом столбце скапливается \(w_i\) воды. Нужно найти количество ячеек с водой: \[W=\sum_{i=1}^{n} w_i.\]
Пример: \[a=(2, 4, 1, 3, 2, 5, 2, 1, 3, 1).\]
⬛⬛⬛⬛⬛⬜⬛⬛⬛⬛
⬛⬜🟦🟦🟦⬜⬛⬛⬛⬛
⬛⬜🟦⬜🟦⬜🟦🟦⬜⬛
⬜⬜🟦⬜⬜⬜⬜🟦⬜⬛
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜
В столбцах скопилось воды \(w=(0,0,3,1,2,0,1,2,0,0),\) в сумме \(W = 9.\)
В C++11 появились три вида умных (интеллектуальных) указателей: std::unique_ptr, std::shared_ptr и std::weak_ptr. Они избавляют от заботы освобождать память и другие ресурсы (если с ними правильно обращаться).
struct Base
{
virtual void print() const noexcept
{
std::cout << "Base (const)" << std::endl;
}
virtual void print() noexcept
{
std::cout << "Base" << std::endl;
}
virtual ~Base() = default;
};
Уникальный в каком-то смысле труд. Шесть книг по программированию. Четыре из них — по языкам Pascal и Delphi, а две другие — по языку Python. И хотя тема не C++, мимо названия «Полезное программирование» было трудно пройти, да и сам автор время от времени высказывается о C++.
256 страниц. СОЛОН-пресс, 2016
Аннотация обещает сделать из читателя большого профессионала.
«Книга для тех, кто умеет программировать и уже готов этим зарабатывать.
Курс молодого, но профессионального программиста. Практические советы.
Что пригодится вам из пройденного и сданного. Что вы будете программировать сначала, а что позже, когда наберётесь опыта. К чему ещё можно применить ваш программистский талант, чтобы руководство одобрило и поощрило. Кратко, доступно, убедительно».
В Рунете полно сайтов о программировании, в основном там много статей для новичков. Такие сайты могут выглядеть модно, но работа авторов и редакторов (если они вообще есть) часто недотягивает до приличного уровня.
Небольшой, но показательный пример. Автор заявляет, что «this является const указателем».
class Foo {
private:
int x;
public:
Foo(int x = 0) { this->x = x; }
void change(Foo *foo) { this = foo; }
void print() { cout << x << endl; }
};
И никого не смутило, что компилятор прямо говорит о причине:
Тип указателя this — либо Foo*, либо const Foo*. Он не может быть Foo* const или const Foo* const. А присвоить ему ничего нельзя потому, что он не является левосторонним значением (lvalue); по-простому — не может стоять слева от знака присваивания.
Читайте хорошие книги и сайты.
Однажды понадобилось спроектировать несколько модальных окон, нужны были референсы. Я решил посмотреть на Microsoft Word, проверенный продукт. И разверзлась бездна.
Предлагаю посмотреть с небольшим количеством комментариев.
Уже первое окно показалось странным. Выравнивание блока Font разваливается.