Lambdas aur Algorithms
<algorithm>, std::sort jaisi ready-made operations deta hai jo kisi bhi container ke begin()/end() iterator pair par kaam karti hain, aapko khud hath se ek sorting loop likhne ke bajaye.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> numbers = {5, 2, 8, 1, 9};
sort(numbers.begin(), numbers.end());
for (int n : numbers) {
cout << n << " ";
}
cout << endl;
return 0;
}1 2 5 8 9
Lambda expressions
Ek lambda, jo [capture](params) { body } se likha jaata hai, ek anonymous inline function hai — [capture] list batati hai ke woh surrounding mein kaun se variables dekh sakta hai. std::find_if jaise ek algorithm ke sath combine kar ke, ek lambda aapko sirf us ek use ke liye ek separate named function likhe baghair ek custom condition express karne deta hai.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> numbers = {1, 2, 3, 4, 5};
int threshold = 3;
auto it = find_if(numbers.begin(), numbers.end(), [threshold](int n) {
return n > threshold;
});
if (it != numbers.end()) {
cout << "First number greater than " << threshold << " is " << *it << endl;
}
return 0;
}First number greater than 3 is 4
Aage: smart pointers — manual new aur delete ka modern, RAII-based alternative.
Practice exercise
Ek vector<int> numbers = {1, 2, 3, 4} diya gaya hai, ek naya vector banayein jisme har number ka square ho, phir sabko spaces se separate kar ke print karein.