Yükleniyor...

C++ algorithm Kütüphanesi: sort, find, count

C++ algorithm kütüphanesini öğrenin. sort, find, count ve diğer STL algoritmalarıyla veri işleme işlemlerini kolaylaştırın.

C++ <algorithm> kütüphanesi, vektörler ve diğer STL konteynerleri üzerinde sık kullanılan işlemleri kolaylıkla yapmamızı sağlayan güçlü fonksiyonlar içerir. Bu makalede en sık kullanılan üç fonksiyon olan sort, find ve count detaylı örneklerle anlatılmaktadır.


1) sort Fonksiyonu

std::sort, bir diziyi veya vektörü varsayılan olarak artan sırada sıralar. Sıralama işlemi genellikle O(n log n) ortalama karmaşıklığa sahiptir.

Temel Kullanım


#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

int main() {
    vector<int> v = {30, 10, 40, 20};

    sort(v.begin(), v.end());

    for (int n : v)
        cout << n << " ";
}

Çıktı: 10 20 30 40

Azalan Sıralama


sort(v.begin(), v.end(), greater<int>());

Özel Karşılaştırıcı (Custom Comparator)


sort(v.begin(), v.end(), [](int a, int b) {
    return a % 10 < b % 10; // son basamağa göre sıralama
});

2) find Fonksiyonu

std::find, bir koleksiyon içindeki elemanı arar ve bulunduğunda ilgili iteratoru döndürür. Eğer eleman yoksa end() iteratoru döner.


#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

int main() {
    vector<int> v = {10, 20, 30, 40};

    auto it = find(v.begin(), v.end(), 30);

    if (it != v.end())
        cout << "Bulundu: " << *it;
    else
        cout << "Bulunamadi!";
}

String Aramak


vector<string> names = {"Ali", "Ayse", "Mehmet"};

auto it = find(names.begin(), names.end(), "Ayse");

3) count Fonksiyonu

std::count, bir koleksiyonda belirli bir değerin kaç kez geçtiğini bulur.


#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

int main() {
    vector<int> v = {10, 20, 20, 30, 20};

    int c = count(v.begin(), v.end(), 20);

    cout << "20 sayisi: " << c;
}

Çıktı: 20 sayısı: 3

Şartlı Sayma (count_if)


int c = count_if(v.begin(), v.end(), [](int x) {
    return x % 2 == 0; // çift sayı sayma
});

4) Uygulamalı Örnek – Metin İçinde Kelime Sayma


#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
using namespace std;

int main() {
    vector<string> words = {"cpp", "java", "cpp", "python", "cpp"};

    int cppCount = count(words.begin(), words.end(), "cpp");

    cout << "cpp kelimesi: " << cppCount << " kez geçti";
}

5) sort, find ve count Bir Arada


#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

int main() {
    vector<int> v = {50, 20, 10, 20, 40};

    sort(v.begin(), v.end()); // 10 20 20 40 50

    auto it = find(v.begin(), v.end(), 20); // ilk 20

    int c = count(v.begin(), v.end(), 20); // 2 tane 20

    cout << "Ilk 20: index " << (it - v.begin()) << endl;
    cout << "Toplam 20 sayisi: " << c;
}

6) Ne Zaman Kullanılır?

<algorithm> kütüphanesi, STL konteynerleri üzerinde yüksek performanslı işlemler yapmanın en güçlü yoludur.


7) TL;DR

  • sort: O(n log n) sıralama fonksiyonu
  • find: Eleman arar, iterator döner
  • count: Değerin kaç kez tekrarlandığını bulur
  • count_if ile şartlı sayma yapılabilir
  • Tüm örnekler Visual Studio 2022 ve GCC ile uyumludur

İlişkili Makaleler