K и & K, используя смысл - PullRequest
0 голосов
/ 29 мая 2020

мир! Поскольку я должен знать смысл существования каждого символа в C ++, я хотел бы познакомиться с причиной, по которой в первом варианте моего кода мы используем & K (в последней строке), а во втором варианте - просто K (также в последней строке). Надеюсь, вы поняли вопрос.

1-я

ifstream in("name.txt");

istream_iterator<int> it(in);
istream_iterator<int> eof;

ostream_iterator<int> out(cout, " ");

size_t K = 1;

remove_copy_if(it, eof, out, [&K](int a) {return K++ % 2 == 0; });





2-nd
````````````````````````````
size_t K;
cin >> K;

ifstream in ("name1.txt");

istream_iterator<string> it(in);
istream_iterator<string> eof;

ofstream out ("name2.txt");

ostream_iterator<string> fout(out, "\n");

remove_copy_if(it, eof, fout, [K](string e) {return e.length() > K; });

1 Ответ

0 голосов
/ 29 мая 2020

почему в первом варианте моего кода мы используем & K (в последней строке), а во втором варианте - просто K (также в последней строке)

Потому что первая лямбда изменяет K в K++ - каждое выполнение лямбды увеличивает K значение. Итак, K должен быть записан с помощью &K.

Вторая лямбда использует только значение K, но не изменяет его. Так что достаточно просто K по значению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...