<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)
Not
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 list
gibi 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 range
da 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 ararkenfind
, 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 çevirirkenreverse_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
Veri Akışı Adı | Açıklama |
---|---|
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_element max_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