6 Haziran 2017 Salı

STL Matematik Algoritmaları

Giriş
STL algoritmalarını işlevlerine göre gruplamak anlamayı çok daha kolaylaştırıyor.

accumulate
std::accumulate yazısına taşıdım.

adjacent_difference
Örnek ver
inner_product
inner_product ile dot product aynı şeyler. Hiç bir zaman kullanmaya ihtiyacım olmadı. Tek işe yaradığını okuduğum yer iki vektörün birbirlerine dik olup olmadığını anlamaya yaramaları. Birbirine dik iki vektörün inner_product sonucu sıfırdır.

partial_sum
accumulate algoritmasına çok benziyor. Tek farkı ara işlemlerin sonucunu bir yere yazıp saklayabilmesi. Nihai sonuç ise çıktının son elemanıdır.
Örnek
iter1begin + iter1end , iter2out + binary op şeklindedir. Binary op olarak lambda kullanılabilir. Şöyle yaparız.
std::partial_sum(v.begin(), v.end(), v.begin(), [](auto& a, auto& b) {
    return std::min(a, b);
});
Örnek
Şöyle yaparız. v dizindeki her eleman birbiri ile çarpılıyor.
std::vector<double> v{ 1.0, 2.0, 3.0, 4.0 };

std::partial_sum(std::begin(v), std::end(v),
                 std::begin(v), std::multiplies<double>());
Çıktı şöyledir
1 2 6 24 


Hiç yorum yok:

Yorum Gönder