<algorithm>

Menentukan fungsi templat kontainer Pustaka Standar C++ yang melakukan algoritma.

Sintaksis

(see links below for specific algorithm syntax)

Catatan

<algorithm> Pustaka juga menggunakan #include <initializer_list> pernyataan .

Keterangan

Algoritma Pustaka Standar C++ dapat beroperasi pada berbagai struktur data. Struktur data yang dapat mereka operasikan tidak hanya menyertakan kelas kontainer Pustaka Standar C++ seperti vector dan list, tetapi juga struktur data dan array elemen yang ditentukan pengguna, selama memenuhi persyaratan algoritma tertentu. Algoritma Pustaka Standar C++ mencapai tingkat kegeneralan ini dengan mengakses dan melintasi elemen kontainer secara tidak langsung melalui iterator.

Algoritma Pustaka Standar C++ memproses rentang iterator yang biasanya ditentukan oleh posisi awal atau akhir. Rentang yang dimaksud harus valid dalam arti bahwa semua iterator dalam rentang harus dapat didereferensikan dan, dalam urutan setiap rentang, posisi terakhir harus dapat dijangkau dari yang pertama dengan meningkatkan iterator.

Mulai dari C++20, sebagian besar algoritma yang ditentukan juga <algorithm> tersedia dalam bentuk yang mengambil range. Misalnya, daripada memanggil sort(v1.begin(), v1.end(), greater<int>());, Anda dapat memanggil ranges::sort(v1, greater<int>());

Algoritma Pustaka Standar C++ dapat bekerja dengan berbagai jenis objek kontainer secara bersamaan. Dua akhiran telah digunakan untuk menyampaikan informasi tentang tujuan algoritma:

  • Akhiran _if menunjukkan bahwa algoritma digunakan dengan objek fungsi yang beroperasi pada nilai elemen daripada pada elemen itu sendiri. Misalnya, find_if algoritma mencari elemen yang nilainya memenuhi kriteria yang ditentukan oleh objek fungsi, sedangkan find algoritma mencari nilai tertentu.

  • Akhiran _copy menunjukkan bahwa algoritma umumnya memodifikasi nilai yang disalin daripada menyalin nilai yang dimodifikasi. Dengan kata lain, elemen tersebut tidak memodifikasi elemen rentang sumber tetapi memasukkan hasilnya ke dalam rentang output/iterator. Misalnya, reverse algoritma membalikkan urutan elemen dalam rentang, sedangkan reverse_copy algoritma menyalin hasil terbalik menjadi rentang tujuan.

Algoritma Pustaka Standar C++ sering diklasifikasikan ke dalam grup untuk menunjukkan tujuan atau persyaratannya. Ini termasuk memodifikasi algoritma yang mengubah nilai elemen dibandingkan dengan algoritma non-modifikasi yang tidak. Algoritma bermutasi mengubah urutan elemen, tetapi bukan nilai elemennya. Menghapus algoritma dapat menghilangkan elemen dari rentang atau salinan rentang. Mengurutkan algoritma menyusun ulang elemen dalam rentang dengan berbagai cara dan algoritma rentang yang diurutkan hanya bertindak berdasarkan rentang yang elemennya telah diurutkan dengan cara tertentu.

Algoritma numerik Pustaka Standar C++ yang disediakan untuk pemrosesan numerik memiliki file <numeric>header mereka sendiri, dan objek fungsi dan adaptor ditentukan di header <functional>. Objek fungsi yang mengembalikan nilai Boolean dikenal sebagai predikat. Predikat biner default adalah perbandingan operator<. Secara umum, elemen yang diurutkan harus kurang dari sebanding sehingga, mengingat dua elemen, dapat ditentukan baik bahwa elemen tersebut setara (dalam arti tidak kurang dari yang lain) atau yang satu itu kurang dari yang lain. Ini menghasilkan pengurutan di antara elemen yang tidak setara.

Algoritma

Nama Deskripsi
adjacent_find Mencari dua elemen yang berdekatan yang sama atau memenuhi kondisi yang ditentukan.
all_of Mengembalikan true saat kondisi ada di setiap elemen dalam rentang yang diberikan.
any_of true Mengembalikan saat kondisi ada setidaknya sekali dalam rentang elemen yang ditentukan.
binary_search Menguji apakah ada elemen dalam rentang yang diurutkan yang sama dengan nilai tertentu atau yang setara dengan elemen tersebut dalam arti yang ditentukan oleh predikat biner.
clamp
copy Menetapkan nilai elemen dari rentang sumber ke rentang tujuan, mengulangi urutan sumber elemen dan menetapkannya posisi baru ke arah depan.
copy_backward Menetapkan nilai elemen dari rentang sumber ke rentang tujuan, melakukan iterasi melalui urutan sumber elemen dan menetapkannya posisi baru ke arah mundur.
copy_if Salin semua elemen dalam rentang tertentu yang menguji true kondisi tertentu
copy_n Menyalin sejumlah elemen tertentu.
count Mengembalikan jumlah elemen dalam rentang yang nilainya cocok dengan nilai tertentu.
count_if Mengembalikan jumlah elemen dalam rentang yang nilainya cocok dengan kondisi tertentu.
equal Membandingkan dua rentang elemen berdasarkan elemen baik untuk kesetaraan atau kesetaraan dalam arti yang ditentukan oleh predikat biner.
equal_range Menemukan sepasang posisi dalam rentang yang diurutkan, yang pertama kurang dari atau setara dengan posisi elemen tertentu dan yang kedua lebih besar dari posisi elemen, di mana rasa kesetaraan atau pengurutan yang digunakan untuk menetapkan posisi dalam urutan dapat ditentukan oleh predikat biner.
fill Menetapkan nilai baru yang sama ke setiap elemen dalam rentang tertentu.
fill_n Menetapkan nilai baru ke jumlah elemen tertentu dalam rentang yang dimulai dengan elemen tertentu.
find Menemukan posisi kemunculan pertama elemen dalam rentang yang memiliki nilai tertentu.
find_end Terlihat dalam rentang untuk subsekuensi terakhir yang identik dengan urutan tertentu atau yang setara dalam arti yang ditentukan oleh predikat biner.
find_first_of Mencari kemunculan pertama dari salah satu dari beberapa nilai dalam rentang target atau untuk kemunculan pertama salah satu dari beberapa elemen yang setara dalam arti yang ditentukan oleh predikat biner ke sekumpulan elemen yang ditentukan.
find_if Menemukan posisi kemunculan pertama elemen dalam rentang yang memenuhi kondisi tertentu.
find_if_not Mengembalikan elemen pertama dalam rentang yang ditunjukkan yang tidak memenuhi kondisi.
for_each Menerapkan objek fungsi tertentu ke setiap elemen dalam urutan penerusan dalam rentang dan mengembalikan objek fungsi.
for_each_n
generate Menetapkan nilai yang dihasilkan oleh objek fungsi ke setiap elemen dalam rentang.
generate_n Menetapkan nilai yang dihasilkan oleh objek fungsi ke jumlah elemen tertentu dalam rentang dan kembali ke posisi satu melewati nilai terakhir yang ditetapkan.
includes Menguji apakah satu rentang yang diurutkan berisi semua elemen yang terkandung dalam rentang terurut kedua, di mana kriteria pengurutan atau kesetaraan antara elemen dapat ditentukan oleh predikat biner.
inplace_merge Menggabungkan elemen dari dua rentang yang diurutkan berturut-turut ke dalam satu rentang yang diurutkan, di mana kriteria pengurutan dapat ditentukan oleh predikat biner.
is_heap Mengembalikan true jika elemen dalam rentang yang ditentukan membentuk timbunan.
is_heap_until Mengembalikan true jika rentang yang ditentukan membentuk timbunan hingga elemen terakhir.
is_partitioned Mengembalikan true jika semua elemen dalam rentang tertentu yang menguji true kondisi datang sebelum elemen apa pun yang menguji false.
is_permutation Menentukan apakah elemen dalam rentang tertentu membentuk permutasi yang valid.
is_sorted Mengembalikan true jika elemen dalam rentang yang ditentukan dalam urutan yang diurutkan.
is_sorted_until Mengembalikan true jika elemen dalam rentang yang ditentukan dalam urutan yang diurutkan.
iter_swap Menukar dua nilai yang dimaksud oleh sepasang iterator tertentu.
lexicographical_compare Membandingkan elemen berdasarkan elemen antara dua urutan untuk menentukan mana yang lebih kecil dari keduanya.
lower_bound Menemukan posisi elemen pertama dalam rentang yang diurutkan yang memiliki nilai lebih besar dari atau setara dengan nilai tertentu, di mana kriteria pengurutan dapat ditentukan oleh predikat biner.
make_heap Mengonversi elemen dari rentang tertentu menjadi timbunan di mana elemen pertama adalah yang terbesar dan yang kriteria pengurutannya dapat ditentukan dengan predikat biner.
max Membandingkan dua objek dan mengembalikan yang lebih besar dari keduanya, di mana kriteria pemesanan dapat ditentukan oleh predikat biner.
max_element Menemukan kemunculan pertama elemen terbesar dalam rentang tertentu di mana kriteria pemesanan dapat ditentukan oleh predikat biner.
merge Menggabungkan semua elemen dari dua rentang sumber yang diurutkan ke dalam satu rentang tujuan yang diurutkan, di mana kriteria pemesanan dapat ditentukan oleh predikat biner.
min Membandingkan dua objek dan mengembalikan yang lebih kecil dari keduanya, di mana kriteria pemesanan dapat ditentukan oleh predikat biner.
min_element Menemukan kemunculan pertama elemen terkecil dalam rentang tertentu di mana kriteria pengurutan dapat ditentukan oleh predikat biner.
minmax Membandingkan dua parameter input dan mengembalikannya sebagai pasangan, paling sedikit dengan yang terbesar.
minmax_element Melakukan pekerjaan yang dilakukan oleh min_element dan max_element dalam satu panggilan.
mismatch Membandingkan dua elemen rentang berdasarkan elemen baik untuk kesetaraan atau setara dalam arti yang ditentukan oleh predikat biner dan menemukan posisi pertama di mana perbedaan terjadi.
<alg> move Pindahkan elemen yang terkait dengan rentang tertentu.
move_backward Memindahkan elemen satu iterator ke iterator lainnya. Pemindahan dimulai dengan elemen terakhir dalam rentang tertentu, dan berakhir dengan elemen pertama dalam rentang tersebut.
next_permutation Menyusun ulang elemen dalam rentang sehingga urutan asli digantikan oleh permutasi yang lebih besar secara leksikografis berikutnya jika ada, di mana rasa berikutnya dapat ditentukan dengan predikat biner.
none_of true Mengembalikan ketika kondisi tidak pernah ada di antara elemen dalam rentang yang diberikan.
nth_element Mempartisi berbagai elemen, menemukan elemen nth dengan benar dari urutan dalam rentang sehingga semua elemen di depannya kurang dari atau sama dengannya dan semua elemen yang mengikutinya dalam urutan lebih besar dari atau sama dengannya.
partial_sort Mengatur jumlah elemen yang lebih kecil tertentu dalam rentang ke dalam urutan yang tidak menurun atau sesuai dengan kriteria pengurutan yang ditentukan oleh predikat biner.
partial_sort_copy Menyalin elemen dari rentang sumber ke dalam rentang tujuan di mana elemen sumber diurutkan berdasarkan predikat biner yang kurang dari atau yang ditentukan lainnya.
partition Mengklasifikasikan elemen dalam rentang menjadi dua set yang terputus-putus, dengan elemen-elemen tersebut memenuhi predikat unary yang gagal memenuhinya.
partition_copy Menyalin elemen yang kondisinya ke true satu tujuan, dan yang kondisinya false lain. Elemen harus berasal dari rentang yang ditentukan.
partition_point Mengembalikan elemen pertama dalam rentang yang diberikan yang tidak memenuhi kondisi. Elemen diurutkan sehingga yang memenuhi kondisi datang sebelum yang tidak.
pop_heap Menghapus elemen terbesar dari depan timbunan ke posisi berikutnya ke yang terakhir dalam rentang dan kemudian membentuk timbunan baru dari elemen yang tersisa.
prev_permutation Menyusun ulang elemen dalam rentang sehingga urutan asli digantikan oleh permutasi yang lebih besar secara leksikografis berikutnya jika ada, di mana rasa berikutnya dapat ditentukan dengan predikat biner.
push_heap Menambahkan elemen yang berada di akhir rentang ke timbunan yang ada yang terdiri dari elemen sebelumnya dalam rentang.
random_shuffle Menyusun ulang urutan elemen N dalam rentang menjadi salah satu N! kemungkinan pengaturan dipilih secara acak.
remove Menghilangkan nilai yang ditentukan dari rentang tertentu tanpa mengganggu urutan elemen yang tersisa dan mengembalikan akhir rentang baru yang bebas dari nilai yang ditentukan.
remove_copy Menyalin elemen dari rentang sumber ke rentang tujuan, kecuali bahwa elemen dari nilai tertentu tidak disalin, tanpa mengganggu urutan elemen yang tersisa dan mengembalikan akhir rentang tujuan baru.
remove_copy_if Menyalin elemen dari rentang sumber ke rentang tujuan, kecuali bahwa memenuhi predikat tidak disalin, tanpa mengganggu urutan elemen yang tersisa dan mengembalikan akhir rentang tujuan baru.
remove_if Menghilangkan elemen yang memenuhi predikat dari rentang tertentu tanpa mengganggu urutan elemen yang tersisa dan mengembalikan akhir rentang baru yang bebas dari nilai yang ditentukan.
replace Memeriksa setiap elemen dalam rentang dan menggantinya jika cocok dengan nilai yang ditentukan.
replace_copy Memeriksa setiap elemen dalam rentang sumber dan menggantinya jika cocok dengan nilai yang ditentukan saat menyalin hasilnya ke rentang tujuan baru.
replace_copy_if Memeriksa setiap elemen dalam rentang sumber dan menggantinya jika memenuhi predikat yang ditentukan saat menyalin hasilnya ke dalam rentang tujuan baru.
replace_if Memeriksa setiap elemen dalam rentang dan menggantinya jika memenuhi predikat yang ditentukan.
reverse Membalikkan urutan elemen dalam rentang.
reverse_copy Membalikkan urutan elemen dalam rentang sumber saat menyalinnya ke dalam rentang tujuan
rotate Menukar elemen dalam dua rentang yang berdekatan.
rotate_copy Menukar elemen dalam dua rentang yang berdekatan dalam rentang sumber dan menyalin hasilnya ke rentang tujuan.
sample
search Mencari kemunculan pertama urutan dalam rentang target yang elemennya sama dengan elemen dalam urutan elemen tertentu atau yang elemennya setara dalam arti yang ditentukan oleh predikat biner untuk elemen dalam urutan yang diberikan.
search_n Mencari subsekuensi pertama dalam rentang dari sejumlah elemen tertentu yang memiliki nilai tertentu atau hubungan dengan nilai tersebut sebagaimana ditentukan oleh predikat biner.
set_difference Menyatukan semua elemen yang termasuk dalam satu rentang sumber yang diurutkan, tetapi tidak ke rentang sumber kedua yang diurutkan, ke dalam satu rentang tujuan yang diurutkan, di mana kriteria pengurutan dapat ditentukan oleh predikat biner.
set_intersection Menyatukan semua elemen yang termasuk dalam kedua rentang sumber yang diurutkan ke dalam satu rentang tujuan yang diurutkan, di mana kriteria pengurutan dapat ditentukan oleh predikat biner.
set_symmetric_difference Menyatukan semua elemen yang termasuk dalam satu, tetapi tidak keduanya, dari rentang sumber yang diurutkan ke dalam satu rentang tujuan yang diurutkan, di mana kriteria pengurutan dapat ditentukan oleh predikat biner.
set_union Menyatukan semua elemen yang termasuk dalam setidaknya satu dari dua rentang sumber yang diurutkan ke dalam satu rentang tujuan yang diurutkan, di mana kriteria pengurutan dapat ditentukan oleh predikat biner.
sort Mengatur elemen dalam rentang tertentu ke dalam urutan yang tidak menurun atau sesuai dengan kriteria pemesanan yang ditentukan oleh predikat biner.
shuffle Mengacak elemen (mengatur ulang) untuk rentang tertentu menggunakan generator angka acak.
sort_heap Mengonversi tumpukan menjadi rentang yang diurutkan.
stable_partition Mengklasifikasikan elemen dalam rentang menjadi dua set yang terputus-putus, dengan elemen-elemen tersebut memenuhi predikat unary yang gagal memenuhinya, mempertahankan urutan relatif elemen yang setara.
stable_sort Mengatur elemen dalam rentang tertentu ke dalam urutan yang tidak menurun atau sesuai dengan kriteria pemesanan yang ditentukan oleh predikat biner dan mempertahankan urutan relatif dari elemen yang setara.
swap Menukar nilai elemen antara dua jenis objek, menetapkan konten objek pertama ke objek kedua dan konten yang kedua ke yang pertama.
swap_ranges Menukar elemen dari satu rentang dengan elemen lain, rentang berukuran sama.
transform Menerapkan objek fungsi tertentu ke setiap elemen dalam rentang sumber atau ke sepasang elemen dari dua rentang sumber dan menyalin nilai pengembalian objek fungsi ke dalam rentang tujuan.
unique Menghapus elemen duplikat yang bersebelahan dalam rentang tertentu.
unique_copy Menyalin elemen dari rentang sumber ke dalam rentang tujuan kecuali untuk elemen duplikat yang berada di samping satu sama lain.
upper_bound Menemukan posisi elemen pertama dalam rentang berurutan yang memiliki nilai yang lebih besar dari nilai yang ditentukan, di mana kriteria pengurutan dapat ditentukan oleh predikat biner.

Baca juga

Referensi File Header
Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++