Zum Beispiel, was ist falsch mit der Klasse Verdoppler innerhalb der Hauptfunktion zu erklären, wenn das Prädikat nur einmal verwendet wird?Warum ist es schlecht, einen lokalen Funktor zu haben?
#include <list>
#include <algorithm>
#define SIZE 10
int main()
{
std::list<int> myList;
for(int i=0; i<SIZE ;++i)
{
myList.push_back(i);
}
class doubler
{
public:
doubler(){}
int operator()(int a)
{
return a + a;
}
} pred;
std::for_each(myList.begin(), myList.end(), pred);
return 0;
}
vs2008 ermöglicht dies auch – stijn
gut, wenn Sie mit VS2010 können Sie für eine Lambda-Funktion direkt gehen. for_each (meineListe.begin(), meineListe.end(), [] (int val) {Rückgabewert + Wert;}); –
vs2005 ermöglicht dies auch, und auf einer Nebenbemerkung, GCC gibt eine ziemlich kryptische Fehler msg, wenn der Funktor Typ ist eine Vorlage:/(Ich lief dies beim Versuch zu kompilieren einige Code kompiliert völlig gut mit VS) – smerlin