Foundations — STL algorithms — sort, find, transform, accumulate, copy, all_of, any_of
5.2.20 · D1· Coding › C++ Programming › STL algorithms — sort, find, transform, accumulate, copy, al
Is page pe assume kiya gaya hai ki tumne kabhi nahin dekha hai koi iterator, lambda, ya notation [first, last). Hum parent note mein use hone se pehle har symbol ko ek picture se build karte hain. Parent: STL algorithms — the topic.
0. Container kya hota hai? (boxes ki shelf)
Kisi bhi symbol se pehle, us cheez ka picture banao jis par hum kaam karte hain.

Figure dekho: paanch boxes 10, 20, 30, 40, 50 hold karte hain. Har box ke neeche ka number uska index hai — box 0 pehla hai. Zero se shuru hone wali yeh numbering hi sab kuch ka beej hai.
1. Iterator — ek box ki taraf point karne wali ungli
Parent note kehta hai ki algorithms "ek pair of iterators" lete hain. Iterator kya hota hai?

Figure mein cyan ungli it box 2 (value 30) ki taraf point kar rahi hai. *it likhne se 30 milta hai. ++it likhne se ungli box 3 par khisal jaati hai. Yahi poora interface hai jo ek algorithm ko chahiye: yahan padho, aage badho. Poore family ke liye dekho Iterators and ranges.
2. begin() aur end() — ungliyan kahan se shuru aur kahan rukti hain

Figure mein begin() box 0 par hai aur end() box 4 ke baad hover kar raha hai — kalpnik "box 5" wali jagah par. end() kabhi kisi real value ki taraf point nahin karta. Kabhi *v.end() mat likho; ungli cliff ke baad hai.
3. Half-open range [first, last) — do-marker wala span
Ab parent note ka central symbol. Bracket ki shapes ka matlab hota hai.

Figure mein amber span boxes 0,1,2 ko cover karta hai — first = begin() box 0 par hai, last box 3 par hai, aur box 3 nahi painta gaya kyunki ) usse exclude karta hai.
4. *it aur it - v.begin() — padhna aur locate karna
Do chhote notation pieces jo parent examples mein use karta hai.
Agar ek ungli box 2 par baithi hai, toh it - v.begin() hai . Yahi parent ka size_t idx = it - v.begin(); trick hai — ek location ko number mein convert karne ke liye start-finger subtract karo. Yeh subtraction sirf random-access containers (memory mein rows) ke liye kaam karta hai, jo humein agli idea par le jaata hai.
5. Random-access vs. ek-kadam-ek-baar (kyun sort ko vector chahiye)
6. "Recipe" jo tum loop ko dete ho — predicates aur operations
sort, find, all_of jaise algorithms ek chhoti function lete hain jo kuch decide karti hai. Woh kya hoti hai?

Figure mein ek box ek chhoti machine mein enter karta hai jis par pred likha hai; bahar aata hai ek light: green true ya grey false. Wahi machine hai jisme all_of aur any_of har box ko daalte hain.
Aisi mini-function likhne ke teen tarike hain, sabse purane se naaye tak:
- ek plain named function,
- ek function object (functor) — ek object jiska
()tum call kar sako, - ek lambda — ek inline throwaway function jo seedha call site par likhi jaaye,
[](int x){ return x % 2 == 0; }.
Parent lambdas har jagah use karta hai: [](int a, int b){ return a > b; }. Ise padho jaise "diye gaye a aur b, a > b se jawaab do." [] wahan hai jahan lambda shuru hota hai.
7. % aur truncation — examples mein chhupa arithmetic
Prerequisite map
Upar se neeche padho: boxes se ungliyan nikalti hain, ungliyon se markers aur ranges bante hain, aur ranges plus recipes saat algorithms ko feed karte hain.
Equipment checklist
Daayeen taraf dhako aur jawaab do; check karne ke liye reveal karo.
Ek container (vector) best picture kiya jaata hai
Iterator hota hai
*it usse read karta hai, ++it usse ek aage move karta hai.v.begin() point karta hai
v.end() point karta hai
[first, last) mein brackets ka matlab hai
[ = first included hai, ) = last excluded hai (yeh stop-signal hai).[first, last) mein elements ki sankhya barabar hoti hai
last - first ke, koi +1 nahin chahiye.Ek empty range dikhti hai
first == last jaisi.it - v.begin() tumhe deta hai
Tum std::sort ek std::list par kyun nahin kar sakte?
Predicate hota hai
true/false return karti hai.Lambda [](int x){ return x % 2 == 0; } padhte hain jaise
x, jawaab do ki x even hai ya nahin."accumulate(..., 0) doubles par truncate kyun karta hai?
init ke type ke barabar hota hai; int 0 matlab ek int accumulator jo fractions kaata hai — 0.0 use karo.