Algorithm | any_of, all_of, none_of algoritmaları


Algoritmaların template bildirimleri
C++11 ile gelen bu üç algoritma lambdalarla birlikte çok faydalı biçimlerde kullanılabilmektedir.  Üç algoritma içinde şablondan üretilecek fonksiyonun ilk iki parametresi  kontrol edilmesi gereken aralığa ilişkin başlangıç ve bitiş itearator değerleri, üçüncü parametre ise tek parametreli bir sınayıcı (predicate) 'dir. Şimdi sırasıyla çalışma mantıklarını irdeleyelim:

Algorithm | any_of

std::any_of algoritmasıyla bir aralık (range) içindeki değerlerden herhangi birinin bir koşulu sağlayıp sağlamadığını kontrol edilmektedir. std::any_of'un geri dönüş değeri bool türündendir. Herhangi biri koşulu sağlıyorsa "true" döner.
STL Test Algoritmalarından any_of örneği
Yukarıdaki örnekte string türünden bir vector container elemanlarının içerisinden herhangi birinin "Mukhtar" elemanına eşit olup olmadığı kontrol edilmiş ve bir tanesi koşulu sağladığı için true dönmüştür. ikinci kontrolde ise herhangi bir üye'nin uzunluğu 11'den fazla mı kontrolü yapılmış ve koşul sağlandığı için true geri dönmüştür.

Algorithm | all_of

std::all_of algoritması ile bir aralık (range) içindeki tüm değerlerin bir koşulu sağlayıp sağlamadığını kontrol edilmektedir. std::all_of'un geri dönüş değeri bool türündendir. Tamamı koşulu sağlıyorsa "true" döner.
STL Test Algoritmalarından all_of örneği
Yukarıdaki örnekte string türünden bir vector container elemanlarının hepsinin uzunluğu 6'dan büyük mü olup olmadığı kontrolü yapılmış ve hepsi koşulu sağladığı için true dönmüştür. ikinci kontrolde ise hepsinin uzunluğu 11'den büyük mü olup olmadığı kontrolü yapılmış ve hepsi koşulu sağlamadığı için false dönmüştür.

Algorithm | none_of

std::none_of algoritması bir aralık (range) içindeki tüm değerlerin verilen bir koşulu sağlamadığını kontrol etmektedir. std::none_of'un geri dönüş değeri bool türündendir. Tamamı koşulu sağlamıyorsa "true" döner. Bu noktada none_of algoritmasının all_of algoritmasının lojik değilidir demek yanlış olmaz.
STL Test Algoritmalarından none_of örneği
Yukarıdaki örnekte string türünden bir vector container elemanlarının hepsinin "Aydin" elemanına eşdeğer olup olmadığı kontrol edilmiş ve bir tane bile olmadığı için true değer olmuştur. Bir tane bile koşul sağlansaydı false değer dönecekti. ikinci kontrolde ise container elemanlarının hepsinin uzunluğu 7'den küçük olmadığı kontrolü yapılmış ve hiç bir container elemanının uzunluğu 7'den küçük olmadığı için koşul sağlandığı için true geri dönmüştür.