Aracılığıyla paylaş


<algorithm>

Algoritmalar gerçekleştiren C++ Standart Kitaplık kapsayıcı şablonu işlevlerini tanımlar.

Sözdizimi

(see links below for specific algorithm syntax)

Dekont

Kitaplık <algorithm> deyimini #include <initializer_list> de kullanır.

Açıklamalar

C++ Standart Kitaplık algoritmaları çeşitli veri yapıları üzerinde çalışabilir. Üzerinde çalışabilecekleri veri yapıları yalnızca ve listgibi vector C++ Standart Kitaplığı kapsayıcı sınıflarını değil, belirli bir algoritmanın gereksinimlerini karşıladıkları sürece kullanıcı tanımlı veri yapılarını ve öğe dizilerini de içerir. C++ Standart Kitaplık algoritmaları, bir kapsayıcının öğelerine erişerek ve yineleyiciler aracılığıyla dolaylı olarak geçiş yaparak bu genellik düzeyini elde eder.

C++ Standart Kitaplık algoritmaları genellikle başlangıç veya bitiş konumları tarafından belirtilen yineleyici aralıklarını işler. Başvurulan aralıklar, aralıklardaki tüm yineleyicilerin başvurulamaz olması ve her aralığın dizileri içinde yineleyici artırılarak son konuma ilkinden ulaşılabilmesi gerektiği için geçerli olmalıdır.

C++20'den başlayarak, içinde <algorithm> tanımlanan algoritmaların çoğu, kullanan bir formda rangeda kullanılabilir. Örneğin, çağrısı sort(v1.begin(), v1.end(), greater<int>());yerine öğesini arayabilirsiniz ranges::sort(v1, greater<int>());

C++ Standart Kitaplık algoritmaları aynı anda farklı kapsayıcı nesne türleriyle çalışabilir. Algoritmaların amacı hakkında bilgi iletmek için iki sonek kullanılmıştır:

  • _if Sonek, algoritmanın öğelerin kendileri yerine öğelerin değerleri üzerinde çalışan işlev nesneleriyle kullanıldığını gösterir. Örneğin algoritma, find_if değerleri bir işlev nesnesi tarafından belirtilen ölçüte uyan öğeleri ararken find , algoritma belirli bir değeri arar.

  • Sonek _copy , algoritmanın değiştirilen değerleri kopyalamak yerine genellikle kopyalanan değerleri değiştirdiğini gösterir. Başka bir deyişle, kaynak aralığın öğelerini değiştirmezler, ancak sonuçları bir çıkış aralığına/yineleyiciye koyarlar. Örneğin, reverse algoritma bir aralıktaki öğelerin sırasını tersine çevirirken reverse_copy , algoritma ters çevrilmiş sonucu bir hedef aralığa kopyalar.

C++ Standart Kitaplık algoritmaları genellikle amaçlarını veya gereksinimlerini belirtmek için gruplar halinde sınıflandırılır. Bunlar, değiştirmeyen algoritmalarla karşılaştırıldığında öğelerin değerini değiştiren algoritmaları değiştirmeyi içerir. Algoritmaların değiştirilmesi öğelerin sırasını değiştirir, ancak kendi öğelerinin değerlerini değiştirmez. Algoritmaların kaldırılması bir aralıktaki ya da aralıktaki bir kopyadaki öğeleri yok sayabilir. Sıralama algoritmaları, bir aralıktaki öğeleri çeşitli şekillerde yeniden sıralar ve sıralanmış aralık algoritmaları yalnızca öğeleri belirli bir şekilde sıralanmış aralıklar üzerinde çalışır.

Sayısal işleme için sağlanan C++ Standart Kitaplığı sayısal algoritmalarının kendi üst bilgi dosyası <numeric>vardır ve işlev nesneleri ve bağdaştırıcıları üst bilgisinde <functional>tanımlanır. Boole değerleri döndüren işlev nesneleri koşul olarak bilinir. Varsayılan ikili koşul karşılaştırmadır operator<. Genel olarak, sıralı öğelerin karşılaştırılabilirden daha az olması gerekir, böylece iki öğe göz önüne alındığında, eşdeğer oldukları (ikisinin de diğerinden küçük olmadığı anlamına gelir) veya birinin diğerinden küçük olduğu belirlenebilir. Bu eşdeğer olmayan öğeler arasında bir sıralamaya neden olur.

Algoritmalar

Ad Tanım
adjacent_find Eşit ya da belirli bir koşulu karşılayan iki bitişik öğeyi arar.
all_of Belirtilen aralıktaki her öğede bir koşul olduğunda döndürür true .
any_of Belirtilen öğe aralığında bir koşul en az bir kez mevcut olduğunda döndürür true .
binary_search Belirtilen değere eşit sıralanmış bir aralıkta bir öğe olup olmadığını ya da bir ikili koşula göre belirtilen anlamda ona eşdeğer bir öğe olup olmadığını sınar.
clamp
copy Bir kaynak aralığındaki öğe değerlerini bir hedef aralığına atayarak, öğelerin kaynak sırası boyunca yineler ve bunları yeni konumlarına ileri yönde atar.
copy_backward Bir kaynak aralığındaki öğe değerlerini bir hedef aralığına atayarak, öğelerin kaynak sırası boyunca yineler ve bunları yeni konumlarına geri yönde atar.
copy_if Belirtilen bir koşulu test true eden belirli bir aralıktaki tüm öğeleri kopyalama
copy_n Belirtilen sayıda öğeyi kopyalar.
count Değerleri belirtilen bir değerle eşleşen bir aralıktaki öğelerin sayısını döndürür.
count_if Değerleri belirtilen bir koşulla eşleşen bir aralıktaki öğelerin sayısını döndürür.
equal Bir ikili koşula göre belirtilen anlamda eşitlik ya da denklik için iki aralık öğesini öğeye göre karşılaştırır.
equal_range Sıralanmış aralıktaki konumların çiftini bulur, birinci belirtilen bir öğenin konumundan küçük veya ona eşittir ve ikinci öğenin konumundan büyüktür, burada dizideki konumlar oluşturmak için kullanılan denkliğin veya sıralamanın anlamı bir ikili koşula göre belirtilebilir.
fill Aynı yeni değeri belirtilen bir aralıktaki her öğeye atar.
fill_n Belirli bir öğeyle başlayan bir aralıktaki belirli öğe sayısına yeni bir değer atar.
find Bir öğenin belirli bir değere sahip olan aralıktaki ilk geçtiği konumu bulur.
find_end Belirli bir diziye özdeş veya bir ikili koşula göre belirtildiği şekilde denk olan son dizi için bir aralık arar.
find_first_of Bir hedef aralığındaki çeşitli değerlerden herhangi birinin ilk geçtiği yeri veya bir ikili koşula göre belirtilen bir öğeler kümesine belirtildiği şekilde denk olan çeşitli öğelerin geçtiği ilk yeri arar.
find_if Bir öğenin belirli bir koşulu karşıladığı aralıktaki ilk geçtiği konumu bulur.
find_if_not Belirtilen aralıktaki bir koşulu karşılamayan ilk öğeyi döndürür.
for_each Bir aralıktaki ileriye doğru sıradaki her öğeye belirli bir işlev uygular ve işlev nesnesini döndürür.
for_each_n
generate Bir işlev nesnesi tarafından oluşturulan değerleri bir aralıktaki her öğeye atar.
generate_n Bir işlev nesnesi tarafından oluşturulan değerleri aralıktaki belirtilen sayıda öğeye atar ve son atanan değerin bir önceki konumuna döner.
includes Sıralanmış bir aralığın ikinci bir sıralanmış aralıkta kapsanan tüm öğeleri içerip içermediğini sınar, burada öğeler arasındaki sıralama veya denklik ölçütü bir ikili koşula göre belirlenebilir.
inplace_merge Ardışık iki sıralanmış aralıktaki öğeleri tek bir sıralanmış aralıkta birleştirir, burada sıralama ölçütü bir ikili koşula göre belirtilebilir.
is_heap Belirtilen aralıktaki öğeler bir yığın oluşturup oluşturmadığını döndürür true .
is_heap_until Belirtilen aralık son öğeye kadar bir yığın oluşturuyorsa döndürür true .
is_partitioned Belirli bir aralıktaki bir koşulu test true eden tüm öğelerin test eden falseöğelerden önce gelip gelmediğini döndürürtrue.
is_permutation Belirli bir aralıktaki öğelerin geçerli bir permütasyon oluşturup oluşturmadığını belirler.
is_sorted Belirtilen aralıktaki öğeler sıralı düzendeyse döndürür true .
is_sorted_until Belirtilen aralıktaki öğeler sıralı düzendeyse döndürür true .
iter_swap Belirtilen yineleyicilerin bir çifti tarafından başvurulan iki değeri birbiriyle değiştirir.
lexicographical_compare Daha küçük olanı belirlemek için iki diziyi öğe öğe karşılaştırır.
lower_bound Sıralı bir aralıkta belirtilen değere eşit ya da daha büyük bir değere sahip ilk öğenin konumunu bulur, burada sıralama kriteri bir ikili koşula göre belirtilebilir.
make_heap Belirtilen bir aralıktaki öğeleri ilk öğenin en büyük olduğu ve onun için bir ikili koşula sahip bir sıralama ölçütünün belirtilebildiği bir yığına dönüştürür.
max İki nesneyi karşılaştırır ve ikisinden büyük olanı döndürür, burada sıralama ölçütü ikili bir koşula göre belirtilebilir.
max_element Belirtilen bir aralıktaki en büyük öğenin geçtiği ilk yeri bulur, burada sıralama ölçütü bir ikili koşula göre belirtilebilir.
merge İki sıralanmış kaynak aralıktaki tüm öğeleri tek bir sıralanmış aralıkta birleştirir, burada sıralama ölçütü bir ikili koşula göre belirtilebilir.
min İki nesneyi karşılaştırır ve ikisinden küçük olanı döndürür, burada sıralama ölçütü ikili bir koşula göre belirtilebilir.
min_element Belirtilen bir aralıktaki en küçük öğenin geçtiği ilk yeri bulur, burada sıralama ölçütü bir ikili koşula göre belirtilebilir.
minmax İki giriş parametresini karşılaştırır ve bunları küçükten büyüğe bir çift olarak döndürür.
minmax_element ve tarafından min_elementmax_element gerçekleştirilen işi tek bir çağrıda gerçekleştirir.
mismatch Eşitlik ya da denklik için ikili bir koşul tarafından belirtildiği şekilde iki aralığı öğe öğe karşılaştırır ve farkın oluştuğu ilk yeri bulur.
<alg> move Belirtilen aralıkla ilişkili öğeleri taşı.
move_backward Bir yineleyicinin öğelerini diğerine taşır. Hareket belirli bir aralıktaki son öğeyle başlar ve söz konusu aralıktaki ilk öğeyle biter.
next_permutation Aralıktaki öğeleri yeniden sıralar, böylece özgün sıralama sözlüksel biçimde, varsa, bir sonraki permütasyon ile değiştirilir, burada sonraki bir ikili koşula göre belirtilebilir.
none_of Belirtilen aralıktaki öğeler arasında koşul hiçbir zaman mevcut olmadığında döndürür true .
nth_element Bir öğe aralığını bölümleyerek, dizideki dizinin n. öğesini doğru bir şekilde bularak önündeki tüm öğelerin ondan küçük veya ona eşit olmasını ve dizide onu izleyen tüm öğelerin ondan büyük veya ona eşit olmasını sağlar.
partial_sort Bir aralıktaki daha küçük öğelerin belirtilen sayısını azalmayan şekilde veya bir ikili koşul tarafından belirtilen bir sıralama ölçütüne göre düzenler.
partial_sort_copy Öğeleri bir kaynak aralığından bir hedef aralığa kopyalar, burada kaynak öğeleri daha küçük olana ya da belirtilen başka bir ikili koşula göre sıralanır.
partition Bir aralıktaki öğeleri, onları karşılamada yetersiz koşulu önceleyen birli koşulu sağlayan öğelerle iki ayrık kümede sınıflandırır.
partition_copy Koşulun bir hedefe, koşulun ise true başka bir hedefe ait olduğu false öğeleri kopyalar. Öğeler belirtilen bir aralıktan gelmelidir.
partition_point Belirtilen aralıktaki koşulu karşılamayan ilk öğeyi döndürür. Öğeler, koşulu karşılayanların olmayanlardan önce gelmesi için sıralanır.
pop_heap En büyük öğeyi bir yığının önünden aralıktaki bir sonraki son konuma kaldırır ve ardından kalan öğelerden yeni bir yığın oluşturur.
prev_permutation Aralıktaki öğeleri yeniden sıralar, böylece özgün sıralama sözlüksel biçimde, varsa, bir sonraki permütasyon ile değiştirilir, burada sonraki bir ikili koşula göre belirtilebilir.
push_heap Aralığın sonundaki bir öğeyi aralıktaki önceki öğeleri içeren mevcut yığına ekler.
random_shuffle Bir aralıktaki N öğelerinin sırasını N'nin birine yeniden düzenler! rastgele seçilen olası düzenlemeler.
remove Kalan öğelerin sırasını bozmadan ve belirtilen değerin yeni aralığının sonunu boş döndürerek verili aralıktaki belirtilen bir değeri ortadan kaldırır.
remove_copy Öğeleri kaynak aralıktan hedef aralığa kopyalar, ancak belirtilen bir değerin öğelerinin kopyalanmaması, kalan öğelerin sırasını bozmadan ve yeni bir hedef aralığın sonunu döndürmeden kopyalanır.
remove_copy_if Bir koşula uymanın kopyalanmaması dışında, kalan öğelerin sırasını bozmadan ve yeni bir hedef aralığın sonunu döndürmeden öğeleri kaynak aralıktan hedef aralığa kopyalar.
remove_if Kalan öğelerin sırasını bozmadan ve belirtilen değerin yeni aralığının sonunu boş döndürerek verili aralıktaki bir koşulu karşılayan öğeleri ortadan kaldırır.
replace Bir aralıktaki tüm öğeleri inceler ve belirtilen bir değerle eşleşiyorsa değiştirir.
replace_copy Bir kaynak aralığındaki her öğeyi inceler ve sonuç yeni bir hedef aralığına kopyalanırken öğe belirtilen değerle eşleşiyorsa, onu değiştirir.
replace_copy_if Bir kaynak aralığındaki her öğeyi inceler ve sonuç yeni bir hedef aralığına kopyalanırken öğe belirtilen bir koşulu karşılıyorsa, onu değiştirir.
replace_if Bir aralıktaki tüm öğeleri inceler ve belirtilen bir koşulu karşılıyorsa değiştirir.
reverse Bir aralık içindeki öğelerin sırasını tersine çevirir.
reverse_copy Bir hedef aralığına kopyalanırken bir kaynak aralığındaki öğelerin sırasını tersine çevirir
rotate İki bitişik aralık içindeki öğeleri birbiriyle değiştirir.
rotate_copy Bir kaynak aralık içindeki iki bitişik aralıktaki öğeleri birbiriyle değiştirir ve sonucu bir hedef aralığına kopyalar.
sample
search Öğeleri verili bir öğe dizisi içindekilerle eşit olan veya öğeleri verili bir dizi öğe için ikili bir koşula göre belirtildiği şekilde denk olan bir hedef aralığındaki dizinin ilk geçtiği yeri arar.
search_n Belirli bir değere veya ikili bir koşula göre belirtilen değerle bir ilişkiye sahip olan öğelerin belirli bir sayısının aralığındaki ilk diziyi arar.
set_difference Sıralanmış ikinci bir kaynak aralığına sahip olanları değil, sıralanmış bir kaynak aralığına sahip öğelerin tümünü tek, sıralanmış bir hedef aralığı içinde birleştirir, burada sıralama ölçütü ikili bir koşula göre belirtilebilir.
set_intersection Her iki sıralanmış kaynak aralığa sahip öğelerin tümünü tek, sıralanmış bir aralıkta birleştirir, burada sıralama ölçütü bir ikili koşula göre belirtilebilir.
set_symmetric_difference İki değil, tek bir sıralanmış kaynak aralığa sahip öğelerin tümünü tek, sıralanmış bir aralıkta birleştirir, burada sıralama ölçütü bir ikili koşula göre belirtilebilir.
set_union İki sıralanmış kaynak aralığından en az birine sahip öğelerin tümünü tek, sıralanmış bir aralıkta birleştirir, burada sıralama ölçütü bir ikili koşula göre belirtilebilir.
sort Belirtilen bir aralıktaki öğeleri azalmayan şekilde veya bir ikili koşul tarafından belirtilen bir sıralama ölçütüne göre düzenler.
shuffle Rastgele bir sayı oluşturucu kullanarak belirli bir aralık için öğeleri karıştır (yeniden düzenler).
sort_heap Bir yığını sıralanmış bir aralığa dönüştürür.
stable_partition Bir aralıktaki öğeleri, eşdeğer öğelerin göreli sırasını koruyaraktan, onları karşılamada yetersiz koşulu önceleyen birli koşulu sağlayan öğelerle iki ayrık kümede sınıflandırır.
stable_sort Belirtilen bir aralıktaki öğeleri, eşdeğer öğelerin göreli sıralamasını koruyaraktan, azalmayan şekilde veya bir ikili koşul tarafından belirtilen bir sıralama ölçütüne göre düzenler.
swap İlk nesnenin içeriğini ikinci nesneye ve ikinci nesneni içeriğini birinciye atayarak, nesnelerin iki türü arasındaki öğelerin değerlerini birbiriyle değiştirir.
swap_ranges Bir aralığın öğelerini eşit büyüklükteki bir diğerinin öğeleriyle değiştirir.
transform Belirtilen işlev nesnesini bir kaynak aralıktaki her bir öğeye veya iki kaynak aralıktaki bir öğe çiftine uygular ve işlev nesnenin dönüş değerlerini bir hedef aralığa kopyalar.
unique Belirtilen aralıkta yan yana olan yinelenen öğeleri kaldırır.
unique_copy Bir kaynak aralıktaki öğeleri, yan yana olan yinelenen öğeler dışında bir hedef aralığa kopyalar.
upper_bound Belirtilenden daha büyük bir değere sahip sıralı bir aralıktaki ilk öğenin konumunu bulur, burada sıralama ölçütü bir ikili koşula göre belirtilebilir.

Ayrıca bkz.

Üst Bilgi Dosyaları Başvurusu
C++ Standart Kitaplığında İş Parçacığı Güvenliği
C++ Standart Kitaplığı Başvurusu