【发布时间】:2016-03-29 13:40:39
【问题描述】:
有些事情我目前无法解决。 我期待一个输出,其中每个元素都增加 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; }
【问题讨论】: