关于以下代码。我不明白Line III的工作原理。这意味着仿函数和仿函数指针是相同的,至少在这种情况下。 有人可以阐明这一点。
他们一般等同于吗?或者仅在作为参数传递时?
#include <iostream>
#include <algorithm>
#include <vector>
#include <deque>
#include <set>
using namespace std;
struct myprinter {
void operator() (int i) {cout << i << ", ";}
};
int main() {
int mynumbers[] = { 3, 9, 0, 2, 1, 4, 5 };
vector<int> v1(mynumbers, mynumbers + 7);
deque<int> d1(mynumbers, mynumbers + 7);
set<int> s1(mynumbers, mynumbers + 7);
//v1.pop_back(5);// Line I
for_each(s1.begin(), s1.end(), myprinter()); // Line II
for_each(d1.begin(), d1.end(), *(new myprinter())); // Line III
//for_each(v1.begin(), v1.end(), myprinter); //Line IV
return 0;
}