<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, sedangkanfind
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, sedangkanreverse_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++
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk