?
Schau in Deinen Unterlagen, was dort zum Thema Argumente von Funktionen steht. Wahrscheinlich findest Du die Kapiel/Stichworte "Übergabe per Wert" (eng. "pass by value"), und "Übergabe per Referenz" (eng. "pass by reference"). Dort wird erklärt, was const string& bedeutet.
Den Lambda Ausdruck [](){} kannst Du Dir als Funktion(-sobjekt) vorstellen.
Im großen und ganzen ist das so ähnlich wie folgende Variante des Programms
double string_to_double(const std::string& s){
return stod(s);
}
int main(){
using namespace std;
vector<string> abs{ "-0.9","1.87","4e-8",".42","0." };
vector<double> abcDouble( abs.size() ); // gleich auf die richtige Groesse bringen
transform(begin(abs), end(abs), begin(abcDouble), string_to_double);
}
Vergleiche ich diese Variante mit der Lambda-Variante fällt auf, dass ich in Zeile 9 beim transform() nicht sehe, wie transformiert wird und dass ich mir einen Funktionsnamen aus den Rippen leiern muss, der jetzt irgendwo rumgeistert, obwohl ich den vielleicht nur für diese eine Transformation brauche.
Das ist ein Feature, das relativ neu in der Sprache ist und daher nicht in älterer Literatur behandelt wird. Aber z.B. hier msdn.microsoft.com wird es ausführlich beschrieben.