template<typename T, typename F>
auto mapV(vector<T> v, F f) {
vector<T> ret = {};
for(int i=0; i < v.size(); i++) {
ret[i] = f(v[i]);
}
return ret;
}
int main() {
vector<int> v = {1,2,3,4,5,6};
vector<int> b = mapV(v, [](int &t){ return t*2; });
for (int n : b) {
cout << "is " << n << endl;
}
return 0;
}
Dieser Code kompiliert, aber beim Ausführen generiert einen segfault. Was ist der richtige Weg, um eine Funktion generisch mit Templates zu akzeptieren? Ich möchte auch die Struktur der Funktion definieren, indem ich sagen kann, dass ich nur eine Funktion akzeptiere, die ein T nimmt und ein T zurückgibt, aber ich bin mir nicht sicher, wie ich das ausdrücken soll.Übergeben einer Funktion generisch an C++ - Vorlage
Ich habe versucht, mit std::function<T(T)>
aber das hat nicht funktioniert entweder
Sie schreiben über das Ende von 'ret' mit' ret [i] = ... '. – user2357112
ah, muss ich stattdessen die Elemente schieben? – leshow
Bitte keine vorhandenen Antworten ungültig machen, stattdessen eine andere Frage stellen. – Quentin