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 cbeginpengembalian , 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_listright, 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 == valmana .

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 Typetemplat .