5.2.20 · D1 · HinglishC++ Programming

FoundationsSTL algorithms — sort, find, transform, accumulate, copy, all_of, any_of

2,092 words10 min read↑ Read in English

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 — STL algorithms — sort, find, transform, accumulate, copy, all_of, any_of

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 — STL algorithms — sort, find, transform, accumulate, copy, all_of, any_of

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 — STL algorithms — sort, find, transform, accumulate, copy, all_of, any_of

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 — STL algorithms — sort, find, transform, accumulate, copy, all_of, any_of

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 — STL algorithms — sort, find, transform, accumulate, copy, all_of, any_of

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

Container - row of boxes

Iterator - a finger

begin and end fingers

Half-open range first to last

star it - read a box

it minus begin - the index

random access - jump and subtract

predicate - yes or no machine

lambda - inline recipe

binary op - combine two values

STL algorithms

percent and truncation

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
ek numbered row of boxes ki tarah, pehla box index 0 par.
Iterator hota hai
ek ungli jo ek box ki taraf point karti hai; *it usse read karta hai, ++it usse ek aage move karta hai.
v.begin() point karta hai
pehle box (index 0) ki taraf.
v.end() point karta hai
aakhiri se ek box AAGE — khali jagah, kabhi real value nahin.
[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
index (start se kitne steps); sirf random-access ke liye kaam karta hai.
Tum std::sort ek std::list par kyun nahin kar sakte?
sort ko random-access fingers chahiye jo jump kar sakein; list finger sirf ek kadam ek baar chalta hai.
Predicate hota hai
ek mini-function jo ek element ke baare mein true/false return karti hai.
Lambda [](int x){ return x % 2 == 0; } padhte hain jaise
"diye gaye x, jawaab do ki x even hai ya nahin."
accumulate(..., 0) doubles par truncate kyun karta hai?
running total ka type init ke type ke barabar hota hai; int 0 matlab ek int accumulator jo fractions kaata hai — 0.0 use karo.