Comments 11
В книге вы найдете более 90 максимально реалистичных примеров, которые демонстрируют всю мощь STL
int main() {
auto greet_john_doe ([] {
std::cout << "Hello, John Doe\n";
});
greet_john_doe();
}
+8
чем это:
лучше чем это?
for (size_t i {0};
лучше чем это?
for (size_t i = 0;
+3
Унифицированная инициализация, которая все равно не может быть использована всегда из-за std::initializer_list. Почитать на тему (а лучше Мейерса)
0
Неудачные примеры как мне кажется, вроде всё это уже в C++ 11 было?
0
не всё — у лямбд не было constexpr квалификатора.
Но примеры и впрямь неудачные. Сама идея объяснять лямбды через функциональные классы — отличная. Но, например, greet_john_doe не является прямым аналогом неанонимного класса выше. Скажем, вот такому коду:
Соответствует вот такой аналог без лямбд:
Но примеры и впрямь неудачные. Сама идея объяснять лямбды через функциональные классы — отличная. Но, например, 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
0
Заманчиво купить, но боюсь что бумажный вариант книги будет раскрыт всего пару раз. Когда нужна быстрая справка по новой функциональности — лезешь в интернет. Когда нужно поэкспериментировать с кодом — гораздо удобнее on-line уроки
(как «Learn OpenGL» на Хабре habr.com/post/350156 )
(как «Learn OpenGL» на Хабре habr.com/post/350156 )
0
> 3. Теперь можно вызвать оба объекта функций, просто написав имя переменных, которые в них сохранены…
Я не понял этой фразы. Кто на ком стоял?
Возможно, правильнее было бы написать «Теперь можно вызвать оба объекта функций, просто написав имя переменных, в которых они сохранены...»?
То есть, объекты функций сохранены в переменных. Это можно понять.
А у вас в объектах функций сохранены имена переменных. Может быть я чего-то не пониманию, и так и должно быть?
Я не понял этой фразы. Кто на ком стоял?
Возможно, правильнее было бы написать «Теперь можно вызвать оба объекта функций, просто написав имя переменных, в которых они сохранены...»?
То есть, объекты функций сохранены в переменных. Это можно понять.
А у вас в объектах функций сохранены имена переменных. Может быть я чего-то не пониманию, и так и должно быть?
0
Sign up to leave a comment.
Книга «С++17 STL. Стандартная библиотека шаблонов»