有些事情我目前无法解决。我期待一个每个元素都增加 1 的输出。显然情况并非如此。
仔细一看,我认为是因为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; }