Pull to refresh

Comments 11

В книге вы найдете более 90 максимально реалистичных примеров, которые демонстрируют всю мощь STL

int main() {

     auto greet_john_doe ([] {
            std::cout << "Hello, John Doe\n";
     });

     greet_john_doe();
}
Каждый день похожий код пишу :)
чем это:
for (size_t i {0};

лучше чем это?
for (size_t i = 0;
Унифицированная инициализация, которая все равно не может быть использована всегда из-за std::initializer_list. Почитать на тему (а лучше Мейерса)
Инициализацией-то я пользуюсь — выгода какая при написании именно так для примитивов? Тем более глаза будут в циклах спотыкаться на {}.
Неудачные примеры как мне кажется, вроде всё это уже в C++ 11 было?
не всё — у лямбд не было constexpr квалификатора.

Но примеры и впрямь неудачные. Сама идея объяснять лямбды через функциональные классы — отличная. Но, например, greet_john_doe не является прямым аналогом неанонимного класса выше. Скажем, вот такому коду:
int a = 5, b = 7, c = 9;

auto foo = [a,&b](auto c) {
    cout << a << " " << b << " " << c << endl;
};

foo(c); // 5 7 9
a = 15;
b = 17;
c = 19
foo(c); // 5 17 19

Соответствует вот такой аналог без лямбд:
struct foo_t
{
    foo_t(int a, const int &b) : a(a), b(b) {}

    void operator()(int c) {
        cout << a << " " << b << " " << c << endl;
    }

private:
    const int a;
    const int &b;
};

// ...

int a = 5, b = 7, c = 9;
foo_t foo(a,b);
foo(c); // 5 7 9
a = 15;
b = 17;
c = 19
foo(c); // 5 17 19
Заманчиво купить, но боюсь что бумажный вариант книги будет раскрыт всего пару раз. Когда нужна быстрая справка по новой функциональности — лезешь в интернет. Когда нужно поэкспериментировать с кодом — гораздо удобнее on-line уроки
(как «Learn OpenGL» на Хабре habr.com/post/350156 )

Я люблю бумажные книги. Купил у Питера томик страниц на 700, а там нет предметного указателя :-)

> 3. Теперь можно вызвать оба объекта функций, просто написав имя переменных, которые в них сохранены…

Я не понял этой фразы. Кто на ком стоял?

Возможно, правильнее было бы написать «Теперь можно вызвать оба объекта функций, просто написав имя переменных, в которых они сохранены...»?

То есть, объекты функций сохранены в переменных. Это можно понять.

А у вас в объектах функций сохранены имена переменных. Может быть я чего-то не пониманию, и так и должно быть?
В этом переводе очень много таких моментов, которые вроде написаны по-русски, но понять их невозможно. Предполагаю, что переводил человек не очень понимающий в этой теме.
Sign up to leave a comment.