std::sort
- C++ kursu
- Orta seviye
- Ders 70/116
- 5 dk
std::sort ile sıralamayı öğrenirsin.
std::sort
std::sort bir aralığı yerinde sıralar. İki iterator alır: std::sort(v.begin(), v.end()). Varsayılan olarak artan sırada (küçükten büyüğe) sıralar. <algorithm> başlığında tanımlıdır.
Sıralama, rastgele erişim iterator gerektirir; bu yüzden std::vector ve std::array üzerinde çalışır ama std::list üzerinde çalışmaz. Sıralama verimlidir (genellikle O(n log n)). Öğeleri doğrudan kapsayıcıda değiştirir; yeni bir kapsayıcı oluşturmaz. Bu yüzden 'yerinde' (in-place) sıralama denir.
Azalan sıralama
Azalan sıralamak için üçüncü parametre olarak std::greater<int>() verirsin: std::sort(v.begin(), v.end(), std::greater<int>());. Bu, > operatörünü kullanarak büyükten küçüğe sıralar.
std::greater, <functional> başlığında tanımlı bir functor'dur. Bir functor, operator() tanımlayan sınıftır; bir fonksiyon gibi çağrılabilir. İleri seviyede kendi functor'larını yazabilir veya lambda kullanabilirsin; ama std::greater gibi hazır functor'lar çoğu durumda yeterlidir.
Uygulama Vektörü sırala ve yazdır
v = {5, 2, 8, 1, 9} vektörünü std::sort ile artan sırada sırala. Sonra bir for döngüsüyle her öğeyi boşlukla yazdır.
Başlangıç kodu
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {5, 2, 8, 1, 9};
// std::sort ile sırala, for ile yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {5, 2, 8, 1, 9};
std::sort(v.begin(), v.end());
for (int x : v) {
std::cout << x << " ";
}
return 0;
}Beklenen çıktı
1 2 5 8 9
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 std::sort varsayılan olarak nasıl sıralar?
std::sort(v.begin(), v.end());- Azalan (büyükten küçüğe)
- Rastgele sıralar
- Ters çevirir
- Artan (küçükten büyüğe) Doğru cevap
Açıklama: Varsayılan artan sıradır.
2 sort çağrısını tamamla
std::____(v.begin(), v.end());
std::sort(v.begin(), v.end());
Açıklama: std::sort aralığı sıralar.
3 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
std::sort(begin, end) |
Artan sıralama |
std::greater<int>() |
Azalan sıralama |
v.begin() |
Aralık başı |
v.end() |
Aralık sonu |