В настоящее время я не могу окутать голову. Я ожидал выхода, где каждый элемент увеличивался на 1. Очевидно, что это не так.bind2nd в цикле for_each
Подойдя ближе, я думаю, что это потому, что возвращаемое значение функции bind2nd отбрасывается; то есть функция не изменяет элементы контейнера.
Я считаю, что это правильно? Может ли кто-нибудь подтвердить или предоставить правильное объяснение, что контейнер не будет изменен?
#include <vector>
#include <iostream>
#include <algorithm>
#include <functional> using namespace std; void printer(int i) {
cout << i << ", "; } int main() {
int mynumbers[] = { 8, 9, 7, 6, 4, 1 };
vector<int> v1(mynumbers, mynumbers + 6);
for_each(v1.begin(), v1.end(), bind2nd(plus<int>(), 1));//LINE I
for_each(v1.rbegin(), v1.rend(), printer);//LINE II
return 0; }