Kelas forward_list
Menjelaskan objek yang mengontrol urutan elemen dengan panjang yang bervariasi. Urutan disimpan sebagai daftar simpul yang ditautkan dengan nyanyian, masing-masing berisi anggota jenis Type
.
Sintaks
template <class Type,
class Allocator = allocator<Type>>
class forward_list
Parameter
Jenis*
Jenis data elemen yang akan disimpan di forward_list.
Pengalokasi
Objek alokator tersimpan yang merangkum detail tentang alokasi forward_list dan alokasi memori. Parameter ini bersifat opsional. Nilai defaultnya adalah alokator<Type
>.
Keterangan
Objek forward_list
mengalokasikan dan membebaskan penyimpanan untuk urutan yang dikontrolnya melalui objek tersimpan dari Alokator kelas yang didasarkan pada Kelas alokator (umumnya dikenal sebagai std::allocator)
. Untuk informasi selengkapnya, lihat Alokator. Objek alokator harus memiliki antarmuka eksternal yang sama dengan objek jenis allocator
.
Catatan
Objek alokator tersimpan tidak disalin saat objek kontainer ditetapkan.
Iterator, penunjuk, dan referensi mungkin menjadi tidak valid ketika elemen urutan yang dikontrol dihapus melalui forward_list
. Penyisipan dan splices yang dilakukan pada urutan yang dikontrol melalui forward_list
tidak membatalkan iterator.
Penambahan pada urutan terkontrol mungkin terjadi oleh panggilan ke forward_list::insert_after, yang merupakan satu-satunya fungsi anggota yang memanggil konstruktor Type(const T&)
. forward_list
mungkin juga memanggil konstruktor pemindahan. Jika ekspresi seperti itu melemparkan pengecualian, objek kontainer tidak menyisipkan elemen baru dan menumbuhkan kembali pengecualian. Dengan demikian, objek jenis forward_list
dibiarkan dalam keadaan yang diketahui ketika pengecualian tersebut terjadi.
Anggota
Konstruktor
Nama | Deskripsi |
---|---|
forward_list | Membuat objek jenis forward_list . |
Typedefs
Nama | Deskripsi |
---|---|
allocator_type | Jenis yang mewakili kelas alokator untuk objek daftar maju. |
const_iterator | Jenis yang menyediakan iterator konstan untuk daftar penerusan. |
const_pointer | Jenis yang menyediakan penunjuk ke const elemen dalam daftar penerusan. |
const_reference | Jenis yang menyediakan referensi konstan ke elemen dalam daftar penerusan. |
difference_type | Jenis bilangan bulat bertanda tangan yang dapat digunakan untuk mewakili jumlah elemen daftar terusan dalam rentang antar elemen yang diarahkan oleh iterator. |
iterator | Jenis yang menyediakan iterator untuk daftar penerusan. |
Pointer | Jenis yang menyediakan penunjuk ke elemen dalam daftar penerusan. |
referensi | Jenis yang menyediakan referensi ke elemen dalam daftar penerusan. |
size_type | Jenis yang mewakili jarak yang tidak ditandatangani antara dua elemen. |
value_type | Jenis yang mewakili jenis elemen yang disimpan dalam daftar terusan. |
Fungsi
Nama | Deskripsi |
---|---|
Menetapkan | Menghapus elemen dari daftar penerusan dan menyalin sekumpulan elemen baru ke daftar penerusan target. |
before_begin | Mengembalikan iterator yang membahas posisi sebelum elemen pertama dalam daftar terusan. |
mulai | Mengembalikan iterator yang menangani elemen pertama dalam daftar terusan. |
cbefore_begin | Mengembalikan iterator const yang membahas posisi sebelum elemen pertama dalam daftar terusan. |
cbegin | Mengembalikan iterator const yang menangani elemen pertama dalam daftar terusan. |
cend | Mengembalikan perulangan const yang membahas lokasi yang menggantikan elemen terakhir dalam daftar terusan. |
hapus | Menghapus semua elemen daftar penerusan. |
emplace_after | Memindahkan membangun elemen baru setelah posisi tertentu. |
emplace_front | Menambahkan elemen yang dibangun di tempat ke awal daftar. |
kosong | Menguji apakah daftar penerusan kosong. |
akhir | Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam daftar terusan. |
erase_after | Menghapus elemen dari daftar terusan setelah posisi tertentu. |
depan | Mengembalikan referensi ke elemen pertama dalam daftar terusan. |
get_allocator | Mengembalikan salinan objek alokator yang digunakan untuk membuat daftar terusan. |
insert_after | Menambahkan elemen ke daftar penerusan setelah posisi tertentu. |
max_size | Mengembalikan panjang maksimum daftar terusan. |
gabungkan | Menghapus elemen dari daftar argumen, menyisipkannya ke dalam daftar penerusan target, dan mengurutkan kumpulan elemen gabungan baru dalam urutan naik atau dalam beberapa urutan lain yang ditentukan. |
pop_front | Menghapus elemen di awal daftar terusan. |
push_front | Menambahkan elemen ke awal daftar penerusan. |
buka | Menghapus elemen dalam daftar penerusan yang cocok dengan nilai tertentu. |
remove_if | Menghapus elemen dari daftar penerusan yang predikat tertentu terpenuhi. |
Mengubah ukuran | Menentukan ukuran baru untuk daftar penerusan. |
reverse | Membalikkan urutan terjadinya elemen dalam daftar terusan. |
urutkan | Mengatur elemen dalam urutan naik atau dengan urutan yang ditentukan oleh predikat. |
splice_after | Memulihkan tautan antar simpul. |
tukar | Menukar elemen dari dua daftar penerusan. |
unique | Menghapus elemen yang berdekatan yang lulus pengujian tertentu. |
Operator
Nama | Deskripsi |
---|---|
operator= | Mengganti elemen daftar terusan dengan salinan daftar penerusan lain. |
allocator_type
Jenis yang mewakili kelas alokator untuk objek daftar maju.
typedef Allocator allocator_type;
Keterangan
allocator_type
adalah sinonim untuk parameter templat Alokator.
assign
Menghapus elemen dari daftar penerusan dan menyalin sekumpulan elemen baru ke daftar penerusan target.
void assign(
size_type Count,
const Type& Val);
void assign(
initializer_list<Type> IList);
template <class InputIterator>
void assign(InputIterator First, InputIterator Last);
Parameter
first
Awal rentang pengganti.
last
Akhir rentang pengganti.
count
Jumlah elemen yang akan ditetapkan.
Val
Nilai untuk menetapkan setiap elemen.
Jenis
Jenis nilai.
IList
initializer_list untuk disalin.
Keterangan
Jika forward_list adalah jenis bilangan bulat, fungsi anggota pertama bersifat sama dengan assign((size_type)First, (Type)Last)
. Jika tidak, fungsi anggota pertama menggantikan urutan yang dikendalikan oleh *this
dengan urutan [ First, Last)
, yang tidak boleh tumpang tindih dengan urutan awal yang dikontrol.
Fungsi anggota kedua menggantikan urutan yang dikontrol oleh *this
dengan pengulangan Count
elemen nilai Val
.
Fungsi anggota ketiga menyalin elemen initializer_list ke dalam forward_list.
before_begin
Mengembalikan iterator yang membahas posisi sebelum elemen pertama dalam daftar terusan.
const_iterator before_begin() const;
iterator before_begin();
Tampilkan Nilai
Iterator maju yang menunjuk tepat sebelum elemen pertama dari urutan (atau tepat sebelum akhir urutan kosong).
Keterangan
mulai
Mengembalikan iterator yang menangani elemen pertama dalam daftar terusan.
const_iterator begin() const;
iterator begin();
Tampilkan Nilai
Iterator maju yang menunjuk pada elemen pertama urutan (atau tepat di luar akhir urutan kosong).
Keterangan
cbefore_begin
Mengembalikan iterator const yang membahas posisi sebelum elemen pertama dalam daftar terusan.
const_iterator cbefore_begin() const;
Tampilkan Nilai
Iterator maju yang menunjuk tepat sebelum elemen pertama dari urutan (atau tepat sebelum akhir urutan kosong).
Keterangan
cbegin
Mengembalikan iterator const
yang membahas elemen pertama dalam rentang.
const_iterator cbegin() const;
Tampilkan Nilai
Iterator const
akses maju yang menunjuk pada elemen pertama rentang, atau lokasi tepat di luar akhir rentang kosong (untuk rentang kosong, cbegin() == cend()
).
Keterangan
Dengan nilai cbegin
pengembalian , elemen dalam rentang tidak dapat dimodifikasi.
Anda dapat menggunakan fungsi anggota ini sebagai pengganti begin()
fungsi anggota untuk menjamin bahwa nilai yang dikembalikan adalah const_iterator
. Biasanya, ini digunakan dengan kata kunci pengurangan jenis otomatis , seperti yang ditunjukkan dalam contoh berikut. Dalam contoh, pertimbangkan Container
untuk menjadi kontainer yang dapat dimodifikasi (non- const
) dari segala jenis yang mendukung begin()
dan cbegin()
.
auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();
// i2 is Container<T>::const_iterator
cend
Mengembalikan iterator const
yang membahas lokasi tepat di luar elemen terakhir dalam rentang.
const_iterator cend() const;
Tampilkan Nilai
Iterator akses maju yang menunjuk tepat di luar akhir rentang.
Keterangan
cend
digunakan untuk menguji apakah iterator telah melewati akhir rentangnya.
Anda dapat menggunakan fungsi anggota ini sebagai pengganti end()
fungsi anggota untuk menjamin bahwa nilai yang dikembalikan adalah const_iterator
. Biasanya, ini digunakan dengan kata kunci pengurangan jenis otomatis , seperti yang ditunjukkan dalam contoh berikut. Dalam contoh, pertimbangkan Container
untuk menjadi kontainer yang dapat dimodifikasi (non- const
) dari segala jenis yang mendukung end()
dan cend()
.
auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();
// i2 is Container<T>::const_iterator
Nilai yang dikembalikan oleh cend
tidak boleh didereferensikan.
hapus
Menghapus semua elemen daftar penerusan.
void clear();
Keterangan
Fungsi anggota ini memanggil erase_after(before_begin(), end())
.
const_iterator
Jenis yang menyediakan iterator konstan untuk daftar penerusan.
typedef implementation-defined const_iterator;
Keterangan
const_iterator
menjelaskan objek yang dapat berfungsi sebagai iterator penerusan konstan untuk urutan yang dikontrol. Ini dijelaskan di sini sebagai sinonim untuk jenis yang ditentukan implementasi.
const_pointer
Jenis yang menyediakan penunjuk ke const
elemen dalam daftar penerusan.
typedef typename Allocator::const_pointer
const_pointer;
Keterangan
const_reference
Jenis yang menyediakan referensi konstan ke elemen dalam daftar penerusan.
typedef typename Allocator::const_reference const_reference;
Keterangan
difference_type
Jenis bilangan bulat bertanda tangan yang dapat digunakan untuk mewakili jumlah elemen daftar terusan dalam rentang antar elemen yang diarahkan oleh iterator.
typedef typename Allocator::difference_type difference_type;
Keterangan
difference_type
menjelaskan objek yang dapat mewakili perbedaan antara alamat dari dua elemen dalam urutan yang dikontrol.
emplace_after
Memindahkan membangun elemen baru setelah posisi tertentu.
template <class T>
iterator emplace_after(const_iterator Where, Type&& val);
Parameter
Tempat
Posisi dalam daftar penerusan target tempat elemen baru dibangun.
Val
Argumen konstruktor.
Tampilkan Nilai
Iterator yang menunjuk elemen yang baru disisipkan.
Keterangan
Fungsi anggota ini menyisipkan elemen dengan val argumen konstruktor tepat setelah elemen yang ditunjukkan oleh Where dalam urutan yang dikontrol. Perilakunya sama dengan forward_list::insert_after.
emplace_front
Menambahkan elemen yang dibangun di tempat ke awal daftar.
template <class Type>
void emplace_front(Type&& val);
Parameter
Val
Elemen ditambahkan ke awal daftar terusan.
Keterangan
Fungsi anggota ini menyisipkan elemen dengan argumen _ val
konstruktor di akhir urutan yang dikontrol.
Jika pengecualian dilemparkan, kontainer dibiarkan tidak diubah dan pengecualian ditumbuhi kembali.
kosong
Menguji apakah daftar penerusan kosong.
bool empty() const;
Tampilkan Nilai
true
jika daftar penerusan kosong; jika tidak, false
.
akhir
Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam daftar terusan.
const_iterator end() const;
iterator end();
Tampilkan Nilai
Iterator maju yang menunjuk tepat di luar akhir urutan.
erase_after
Menghapus elemen dari daftar terusan setelah posisi tertentu.
iterator erase_after(const_iterator Where);
iterator erase_after(const_iterator first, const_iterator last);
Parameter
Tempat
Posisi dalam daftar penerusan target tempat elemen dihapus.
first
Awal rentang untuk menghapus.
last
Akhir rentang untuk menghapus.
Tampilkan Nilai
Iterator yang menunjuk elemen pertama yang tersisa di luar elemen apa pun yang dihapus, atau forward_list::end jika tidak ada elemen tersebut.
Keterangan
Fungsi anggota pertama menghapus elemen urutan yang dikontrol tepat setelah Where.
Fungsi anggota kedua menghapus elemen urutan terkontrol dalam rentang ( first, last)
(tidak ada titik akhir yang disertakan).
Menghapus N
elemen menyebabkan N
panggilan destruktor. Realokasi terjadi, sehingga iterator dan referensi menjadi tidak valid untuk elemen yang dihapus.
Fungsi anggota tidak pernah melemparkan pengecualian.
forward_list
Membuat objek jenis forward_list
.
forward_list();
explicit forward_list(const Allocator& Al);
explicit forward_list(size_type Count);
forward_list(size_type Count, const Type& Val);
forward_list(size_type Count, const Type& Val, const Allocator& Al);
forward_list(const forward_list& Right);
forward_list(const forward_list& Right, const Allocator& Al);
forward_list(forward_list&& Right);
forward_list(forward_list&& Right, const Allocator& Al);
forward_list(initializer_list<Type> IList, const Alloc& Al);
template <class InputIterator>
forward_list(InputIterator First, InputIterator Last);
template <class InputIterator>
forward_list(InputIterator First, InputIterator Last, const Allocator& Al);
Parameter
Al
Kelas alokator untuk digunakan dengan objek ini.
Hitung
Jumlah elemen dalam daftar yang dibangun.
Val
Nilai elemen dalam daftar yang dibangun.
Kanan
Daftar tempat daftar yang dibuat akan menjadi salinan.
Pertama
Posisi elemen pertama dalam rentang elemen yang akan disalin.
Terakhir
Posisi elemen pertama di luar rentang elemen yang akan disalin.
IList
initializer_list untuk disalin.
Keterangan
Semua konstruktor menyimpan alokator dan menginisialisasi urutan yang dikontrol. Objek alokator adalah argumen Al, jika ada. Untuk konstruktor salinan, ini adalah right.get_allocator()
. Jika tidak, itu Allocator()
adalah .
Dua konstruktor pertama menentukan urutan awal yang dikontrol kosong.
Konstruktor ketiga menentukan pengulangan elemen Hitung nilai Type()
.
Konstruktor keempat dan kelima menentukan pengulangan elemen Count dari nilai Val.
Konstruktor keenam menentukan salinan urutan yang dikontrol oleh Kanan. Jika InputIterator
adalah jenis bilangan bulat, dua konstruktor berikutnya menentukan pengulangan (size_type)First
elemen nilai (Type)Last
. Jika tidak, dua konstruktor berikutnya menentukan urutan [First, Last)
.
Konstruktor kesembilan dan kesepuluh sama dengan yang keenam, tetapi dengan referensi rvalue .
Konstruktor terakhir menentukan urutan awal yang dikontrol dengan objek kelas initializer_list<Type>
.
depan
Mengembalikan referensi ke elemen pertama dalam daftar terusan.
reference front();
const_reference front() const;
Tampilkan Nilai
Referensi ke elemen pertama dari urutan yang dikontrol, yang harus tidak kosong.
get_allocator
Mengembalikan salinan objek alokator yang digunakan untuk membuat daftar terusan.
allocator_type get_allocator() const;
Tampilkan Nilai
Objek alokator tersimpan.
insert_after
Menambahkan elemen ke daftar penerusan setelah posisi tertentu.
iterator insert_after(const_iterator Where, const Type& Val);
void insert_after(const_iterator Where, size_type Count, const Type& Val);
void insert_after(const iterator Where, initializer_list<Type> IList);
iterator insert_after(const_iterator Where, Type&& Val);
template <class InputIterator>
void insert_after(const_iterator Where, InputIterator First, InputIterator Last);
Parameter
Tempat
Posisi dalam daftar penerusan target tempat elemen pertama disisipkan.
Hitung
Jumlah elemen yang akan disisipkan.
Pertama
Awal rentang penyisipan.
Terakhir
Akhir rentang penyisipan.
Val
Elemen ditambahkan ke daftar penerusan.
IList
initializer_list yang akan disisipkan.
Tampilkan Nilai
Iterator yang menunjuk elemen yang baru disisipkan (hanya fungsi anggota pertama dan terakhir).
Keterangan
Setiap fungsi anggota disisipkan—tepat setelah elemen menunjuk ke Di mana dalam urutan yang dikontrol—urutan yang ditentukan oleh operand yang tersisa.
Fungsi anggota pertama menyisipkan elemen yang memiliki nilai Val dan mengembalikan iterator yang menunjuk elemen yang baru dimasukkan.
Fungsi anggota kedua menyisipkan pengulangan elemen Hitung nilai Val.
Jika InputIterator
adalah jenis bilangan bulat, fungsi anggota ketiga berulah sama dengan insert(it, (size_type)First, (Type)Last)
. Jika tidak, ia menyisipkan urutan [First, Last)
, yang tidak boleh tumpang tindih dengan urutan awal yang dikontrol.
Fungsi anggota keempat menyisipkan urutan yang ditentukan oleh objek kelas initializer_list<Type>
.
Fungsi anggota terakhir sama dengan yang pertama, tetapi dengan referensi rvalue .
N
Menyisipkan elemen menyebabkan N
panggilan konstruktor. Realokasi terjadi, tetapi tidak ada iterator atau referensi yang menjadi tidak valid.
Jika pengecualian dilemparkan selama penyisipan satu atau beberapa elemen, kontainer dibiarkan tidak berubah dan pengecualian ditumbuhi kembali.
iterator
Jenis yang menyediakan iterator untuk daftar penerusan.
typedef implementation-defined iterator;
Keterangan
iterator
menjelaskan objek yang dapat berfungsi sebagai iterator maju untuk urutan terkontrol. Ini dijelaskan di sini sebagai sinonim untuk jenis yang ditentukan implementasi.
max_size
Mengembalikan panjang maksimum daftar terusan.
size_type max_size() const;
Tampilkan Nilai
Panjang urutan terpanjang yang dapat dikontrol objek.
Keterangan
gabungkan
Menggabungkan dua urutan yang diurutkan ke dalam satu urutan yang diurutkan dalam waktu linier. Menghapus elemen dari daftar argumen, dan menyisipkannya ke dalam ini forward_list
. Dua daftar harus diurutkan menurut objek fungsi perbandingan yang sama sebelum panggilan ke merge
. Daftar gabungan akan diurutkan menurut objek fungsi perbandingan tersebut.
void merge(forward_list& right);
template <class Predicate>
void merge(forward_list& right, Predicate comp);
Parameter
right
Daftar penerusan untuk digabungkan.
Comp
Objek fungsi perbandingan yang digunakan untuk mengurutkan elemen.
Keterangan
forward_list::merge
menghapus elemen dari forward_list
right
, dan menyisipkannya ke dalam ini forward_list
. Kedua urutan harus diurutkan dengan predikat yang sama, dijelaskan di bawah ini. Urutan gabungan juga diurutkan berdasarkan objek fungsi perbandingan tersebut.
Untuk iterator Pi
dan Pj
menunjuk elemen pada posisi i
dan j
, fungsi anggota pertama memberlakukan urutan !(*Pj < *Pi)
setiap kali i < j
. (Elemen diurutkan secara ascending
berurutan.) Fungsi anggota kedua memberlakukan pesanan ! comp(*Pj, *Pi)
setiap kali i < j
.
Tidak ada pasangan elemen dalam urutan terkontrol asli yang dibalik dalam urutan terkontrol yang dihasilkan. Jika sepasang elemen dalam urutan terkontrol yang dihasilkan membandingkan sama ( !(*Pi < *Pj) && !(*Pj < *Pi)
), elemen dari urutan terkontrol asli muncul sebelum elemen dari urutan yang dikendalikan oleh right
.
Pengecualian hanya terjadi jika comp
melempar pengecualian. Dalam hal ini, urutan terkontrol dibiarkan dalam urutan yang tidak ditentukan dan pengecualian ditumbuhi kembali.
operator=
Mengganti elemen daftar terusan dengan salinan daftar penerusan lain.
forward_list& operator=(const forward_list& right);
forward_list& operator=(initializer_list<Type> IList);
forward_list& operator=(forward_list&& right);
Parameter
right
Daftar penerusan sedang disalin ke dalam daftar penerusan.
IList
Daftar inisialisasi yang diapit kurung kurawal, yang berprilaku seperti urutan elemen jenis Type
.
Keterangan
Operator anggota pertama mengganti urutan terkontrol dengan salinan urutan yang dikontrol oleh kanan.
Operator anggota kedua menggantikan urutan terkontrol dari objek kelas initializer_list<Type>
.
Operator anggota ketiga sama dengan yang pertama, tetapi dengan referensi rvalue .
Pointer
Jenis yang menyediakan penunjuk ke elemen dalam daftar penerusan.
typedef typename Allocator::pointer pointer;
pop_front
Menghapus elemen di awal daftar terusan.
void pop_front();
Keterangan
Elemen pertama dari daftar penerusan harus tidak kosong.
Fungsi anggota tidak pernah melemparkan pengecualian.
push_front
Menambahkan elemen ke awal daftar penerusan.
void push_front(const Type& val);
void push_front(Type&& val);
Parameter
Val
Elemen ditambahkan ke awal daftar terusan.
Keterangan
Jika pengecualian dilemparkan, kontainer dibiarkan tidak diubah dan pengecualian ditumbuhi kembali.
referensi
Jenis yang menyediakan referensi ke elemen dalam daftar penerusan.
typedef typename Allocator::reference reference;
buka
Menghapus elemen dalam daftar penerusan yang cocok dengan nilai tertentu.
void remove(const Type& val);
Parameter
Val
Nilai yang, jika dipegang oleh elemen, akan menghasilkan penghapusan elemen tersebut dari daftar.
Keterangan
Fungsi anggota menghapus dari urutan terkontrol semua elemen, yang ditunjuk oleh iterator P
, yang *P == val
mana .
Fungsi anggota tidak pernah melemparkan pengecualian.
remove_if
Menghapus elemen dari daftar penerusan yang predikat tertentu terpenuhi.
template <class Predicate>
void remove_if(Predicate pred);
Parameter
pred
Predikat unary yang, jika dipenuhi oleh elemen, menghasilkan penghapusan elemen tersebut dari daftar.
Keterangan
Fungsi anggota menghapus dari urutan terkontrol semua elemen, yang ditunjuk oleh iterator P
, yang pred(*P)
benar.
Pengecualian hanya terjadi jika pred melempar pengecualian. Dalam hal ini, urutan terkontrol dibiarkan dalam keadaan yang tidak ditentukan dan pengecualian ditumbuhi kembali.
ubah ukuran
Menentukan ukuran baru untuk daftar penerusan.
void resize(size_type _Newsize);
void resize(size_type _Newsize, const Type& val);
Parameter
_Newsize
Jumlah elemen dalam daftar penerusan ukuran.
Val
Nilai yang digunakan untuk padding.
Keterangan
Anggota berfungsi memastikan bahwa jumlah elemen dalam daftar selanjutnya _Newsize. Jika harus membuat urutan terkontrol lebih lama, fungsi anggota pertama menambahkan elemen dengan nilai Type()
, sementara fungsi anggota kedua menambahkan elemen dengan value val. Untuk membuat urutan terkontrol lebih pendek, kedua fungsi anggota secara efektif memanggil erase_after(begin() + _Newsize - 1, end())
.
reverse
Membalikkan urutan terjadinya elemen dalam daftar terusan.
void reverse();
size_type
Jenis yang mewakili jarak yang tidak ditandatangani antara dua elemen.
typedef typename Allocator::size_type size_type;
Keterangan
Jenis bilangan bulat yang tidak ditandatangani menjelaskan objek yang dapat mewakili panjang urutan yang dikontrol.
urutkan
Mengatur elemen dalam urutan naik atau dengan urutan yang ditentukan oleh predikat.
void sort();
template <class Predicate>
void sort(Predicate pred);
Parameter
pred
Predikat pemesanan.
Keterangan
Kedua fungsi anggota mengurutkan elemen dalam urutan yang dikontrol dengan predikat, yang dijelaskan di bawah ini.
Untuk iterator Pi
dan Pj
menunjuk elemen pada posisi i
dan j
, fungsi anggota pertama memberlakukan urutan !(*Pj < *Pi)
setiap kali i < j
. (Elemen diurutkan secara ascending
berurutan.) Fungsi templat anggota memberlakukan pesanan ! pred(*Pj, *Pi)
setiap kali i < j
. Tidak ada pasangan elemen yang diurutkan dalam urutan terkontrol asli yang dibalik dalam urutan terkontrol yang dihasilkan. (Sortiran stabil.)
Pengecualian hanya terjadi jika pred melempar pengecualian. Dalam hal ini, urutan terkontrol dibiarkan dalam urutan yang tidak ditentukan dan pengecualian ditumbuhi kembali.
splice_after
Menghapus elemen dari forward_list sumber dan menyisipkannya ke forward_list tujuan.
// insert the entire source forward_list
void splice_after(const_iterator Where, forward_list& Source);
void splice_after(const_iterator Where, forward_list&& Source);
// insert one element of the source forward_list
void splice_after(const_iterator Where, forward_list& Source, const_iterator Iter);
void splice_after(const_iterator Where, forward_list&& Source, const_iterator Iter);
// insert a range of elements from the source forward_list
void splice_after(
const_iterator Where,
forward_list& Source,
const_iterator First,
const_iterator Last);
void splice_after(
const_iterator Where,
forward_list&& Source,
const_iterator First,
const_iterator Last);
Parameter
Tempat
Posisi di forward_list tujuan setelah itu untuk disisipkan.
Sumber
Sumber forward_list yang akan disisipkan ke forward_list tujuan.
Iter
Elemen yang akan disisipkan dari sumber forward_list.
Pertama
Elemen pertama dalam rentang yang akan disisipkan dari forward_list sumber.
Terakhir
Posisi pertama di luar rentang yang akan disisipkan dari sumber forward_list.
Keterangan
Pasangan pertama fungsi anggota menyisipkan urutan yang dikontrol oleh Sumber tepat setelah elemen dalam urutan terkontrol yang diacu oleh Where. Ini juga menghapus semua elemen dari Sumber. (&Source
tidak boleh sama dengan this
.)
Pasangan kedua fungsi anggota menghapus elemen tepat setelah Iter dalam urutan yang dikontrol oleh Sumber dan menyisipkannya tepat setelah elemen dalam urutan terkontrol yang diacu oleh Where. (Jika Where == Iter || Where == ++Iter
, tidak ada perubahan yang terjadi.)
Pasangan ketiga fungsi anggota (splice rentang) menyisipkan subrange yang ditunjuk oleh (First, Last)
dari urutan yang dikontrol oleh Sumber tepat setelah elemen dalam urutan terkontrol yang diarahkan oleh Where. Ini juga menghapus subrange asli dari urutan yang dikontrol oleh Sumber. (Jika &Source == this
, rentang (First, Last)
tidak boleh menyertakan elemen yang ditujukkan oleh Where.)
Jika splice berkisar N
menyisipkan elemen, dan &Source != this
, objek iterator kelas akan mengalami peningkatan N
waktu.
Tidak ada iterator, pointer, atau referensi yang menunjuk elemen spliced menjadi tidak valid.
Contoh
// forward_list_splice_after.cpp
// compile with: /EHsc /W4
#include <forward_list>
#include <iostream>
using namespace std;
template <typename S> void print(const S& s) {
for (const auto& p : s) {
cout << "(" << p << ") ";
}
cout << endl;
}
int main()
{
forward_list<int> c1{ 10, 11 };
forward_list<int> c2{ 20, 21, 22 };
forward_list<int> c3{ 30, 31 };
forward_list<int> c4{ 40, 41, 42, 43 };
forward_list<int>::iterator where_iter;
forward_list<int>::iterator first_iter;
forward_list<int>::iterator last_iter;
cout << "Beginning state of lists:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
cout << "c3 = ";
print(c3);
cout << "c4 = ";
print(c4);
where_iter = c2.begin();
++where_iter; // start at second element
c2.splice_after(where_iter, c1);
cout << "After splicing c1 into c2:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
first_iter = c3.begin();
c2.splice_after(where_iter, c3, first_iter);
cout << "After splicing the first element of c3 into c2:" << endl;
cout << "c3 = ";
print(c3);
cout << "c2 = ";
print(c2);
first_iter = c4.begin();
last_iter = c4.end();
// set up to get the middle elements
++first_iter;
c2.splice_after(where_iter, c4, first_iter, last_iter);
cout << "After splicing a range of c4 into c2:" << endl;
cout << "c4 = ";
print(c4);
cout << "c2 = ";
print(c2);
}
Beginning state of lists:c1 = (10) (11)c2 = (20) (21) (22)c3 = (30) (31)c4 = (40) (41) (42) (43)After splicing c1 into c2:c1 =c2 = (20) (21) (10) (11) (22)After splicing the first element of c3 into c2:c3 = (30)c2 = (20) (21) (31) (10) (11) (22)After splicing a range of c4 into c2:c4 = (40) (41)c2 = (20) (21) (42) (43) (31) (10) (11) (22)
pertukaran
Menukar elemen dari dua daftar penerusan.
void swap(forward_list& right);
Parameter
right
Daftar penerusan yang menyediakan elemen yang akan ditukar.
Keterangan
Fungsi anggota menukar urutan terkontrol antara *this
dan kanan. Jika get_allocator() == right.get_allocator()
, ia melakukannya dalam waktu konstan, itu tidak memberikan pengecualian, dan tidak membatalkan referensi, penunjuk, atau iterator yang menunjuk elemen dalam dua urutan yang dikontrol. Jika tidak, ia melakukan penugasan elemen dan panggilan konstruktor sebanding dengan jumlah elemen dalam dua urutan yang dikontrol.
unique
Menghilangkan semua kecuali elemen pertama dari setiap kelompok berturut-turut dari elemen yang sama.
void unique();
template <class BinaryPredicate>
void unique(BinaryPredicate comp);
Parameter
Comp
Predikat biner digunakan untuk membandingkan elemen berturut-turut.
Keterangan
Menyimpan elemen pertama dari setiap elemen unik, dan menghapus sisanya. Elemen harus diurutkan sehingga elemen nilai yang sama berdekatan dalam daftar.
Fungsi anggota pertama dihapus dari urutan terkontrol setiap elemen yang dibandingkan dengan elemen sebelumnya. Untuk iterator Pi
dan Pj
menunjuk elemen pada posisi i
dan j
, fungsi anggota kedua menghapus setiap elemen yang i + 1 == j && comp(*Pi, *Pj)
.
Untuk urutan panjang N
terkontrol (> 0), predikat comp(*Pi, *Pj)
dievaluasi N - 1
kali.
Pengecualian hanya terjadi jika comp
melempar pengecualian. Dalam hal ini, urutan terkontrol dibiarkan dalam keadaan yang tidak ditentukan dan pengecualian ditumbuhi kembali.
value_type
Jenis yang mewakili jenis elemen yang disimpan dalam daftar terusan.
typedef typename Allocator::value_type value_type;
Keterangan
Jenisnya adalah sinonim untuk parameter Type
templat .