Functor和Functor指针通常是否相等?

时间:2016-03-31 16:11:05

标签: function-pointers functor c++98

关于以下代码。我不明白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;
}

0 个答案:

没有答案