list
Kelas
Kelas daftar Pustaka Standar C++ adalah templat kelas kontainer urutan yang mempertahankan elemennya dalam pengaturan linier dan memungkinkan penyisipan dan penghapusan yang efisien di lokasi mana pun dalam urutan. Urutan disimpan sebagai daftar elemen yang ditautkan dua arah, masing-masing berisi anggota dari beberapa jenis Type
.
Sintaks
template <class Type, class Allocator= allocator<Type>>
class list
Parameter
Type
Jenis data elemen yang akan disimpan dalam daftar.
Allocator
Jenis yang mewakili objek alokator tersimpan yang merangkum detail tentang alokasi daftar dan alokasi memori. Argumen ini bersifat opsional, dan nilai defaultnya adalah allocator<Type>
.
Keterangan
Pilihan jenis kontainer harus didasarkan secara umum pada jenis pencarian dan penyisipan yang diperlukan oleh aplikasi. Vektor harus menjadi kontainer pilihan untuk mengelola urutan ketika akses acak ke elemen apa pun berada pada premium dan penyisipan atau penghapusan elemen hanya diperlukan pada akhir urutan. Performa kontainer deque kelas lebih unggul ketika akses acak diperlukan dan penyisipan dan penghapusan di awal dan akhir urutan berada pada premium.
Daftar anggota fungsi merge
, , reverse
unique
, remove
, dan remove_if
telah dioptimalkan untuk operasi pada objek daftar dan menawarkan alternatif berkinerja tinggi untuk rekan generik mereka.
Realokasi daftar terjadi ketika fungsi anggota harus menyisipkan atau menghapus elemen daftar. Dalam semua kasus seperti itu, hanya iterator atau referensi yang menunjuk pada bagian yang dihapus dari urutan yang dikontrol menjadi tidak valid.
Sertakan header <list>
standar Pustaka Standar C++ untuk menentukan container
daftar templat kelas dan beberapa templat pendukung.
Anggota
Konstruktor
Nama | Deskripsi |
---|---|
list |
Membuat daftar ukuran tertentu atau dengan elemen nilai tertentu atau dengan spesifik allocator atau sebagai salinan dari beberapa daftar lainnya. |
Typedefs
Nama | Deskripsi |
---|---|
allocator_type |
Jenis yang mewakili allocator kelas untuk objek daftar. |
const_iterator |
Jenis yang menyediakan iterator dua arah yang dapat membaca const elemen dalam daftar. |
const_pointer |
Jenis yang menyediakan penunjuk ke const elemen dalam daftar. |
const_reference |
Jenis yang menyediakan referensi ke elemen yang const disimpan dalam daftar untuk membaca dan melakukan const operasi. |
const_reverse_iterator |
Jenis yang menyediakan iterator dua arah yang dapat membaca elemen apa pun const dalam daftar. |
difference_type |
Jenis yang menyediakan perbedaan antara dua iterator yang merujuk ke elemen dalam daftar yang sama. |
iterator |
Jenis yang menyediakan iterator dua arah yang dapat membaca atau memodifikasi elemen apa pun dalam daftar. |
pointer |
Jenis yang menyediakan penunjuk ke elemen dalam daftar. |
reference |
Jenis yang menyediakan referensi ke elemen yang const disimpan dalam daftar untuk membaca dan melakukan const operasi. |
reverse_iterator |
Jenis yang menyediakan iterator dua arah yang dapat membaca atau memodifikasi elemen dalam daftar terbalik. |
size_type |
Jenis yang menghitung jumlah elemen dalam daftar. |
value_type |
Jenis yang mewakili jenis data yang disimpan dalam daftar. |
Fungsi
Nama | Deskripsi |
---|---|
assign |
Menghapus elemen dari daftar dan menyalin sekumpulan elemen baru ke daftar target. |
back |
Mengembalikan referensi ke elemen terakhir daftar. |
begin |
Mengembalikan iterator yang menangani elemen pertama dalam daftar. |
cbegin |
Mengembalikan iterator const yang membahas elemen pertama dalam daftar. |
cend |
Mengembalikan perulangan const yang membahas lokasi yang menggantikan elemen terakhir dalam daftar. |
clear |
Menghapus semua elemen daftar. |
crbegin |
Mengembalikan iterator const yang menangani elemen pertama dalam daftar terbalik. |
crend |
Mengembalikan iterator const yang membahas lokasi yang menggantikan elemen terakhir dalam daftar terbalik. |
emplace |
Menyisipkan elemen yang dibangun di tempat ke dalam daftar pada posisi tertentu. |
emplace_back |
Menambahkan elemen yang dibangun di tempat ke akhir daftar. |
emplace_front |
Menambahkan elemen yang dibangun di tempat ke awal daftar. |
empty |
Menguji apakah daftar kosong. |
end |
Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam daftar. |
erase |
Menghapus elemen atau rentang elemen dalam daftar dari posisi yang ditentukan. |
front |
Mengembalikan referensi ke elemen pertama dalam daftar. |
get_allocator |
Mengembalikan salinan objek yang allocator digunakan untuk membuat daftar. |
insert |
Menyisipkan elemen atau sejumlah elemen atau rentang elemen ke dalam daftar pada posisi tertentu. |
max_size |
Mengembalikan panjang maksimum daftar. |
merge |
Menghapus elemen dari daftar argumen, menyisipkannya ke dalam daftar target, dan mengurutkan kumpulan elemen gabungan baru dalam urutan naik atau dalam beberapa urutan lain yang ditentukan. |
pop_back |
Menghapus elemen di akhir daftar. |
pop_front |
Menghapus elemen di awal daftar. |
push_back |
Menambahkan elemen ke akhir daftar. |
push_front |
Menambahkan elemen ke awal daftar. |
rbegin |
Mengembalikan iterator yang menangani elemen pertama dalam daftar terbalik. |
remove |
Menghapus elemen dalam daftar yang cocok dengan nilai tertentu. |
remove_if |
Menghapus elemen dari daftar yang predikatnya ditentukan terpenuhi. |
rend |
Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam daftar terbalik. |
resize |
Menentukan ukuran baru untuk daftar. |
reverse |
Membalikkan urutan terjadinya elemen dalam daftar. |
size |
Mengembalikan jumlah elemen dalam daftar. |
sort |
Mengatur elemen daftar dalam urutan naik atau sehubungan dengan beberapa hubungan pesanan lainnya. |
splice |
Menghapus elemen dari daftar argumen dan menyisipkannya ke dalam daftar target. |
swap |
Menukar elemen dari dua daftar. |
unique |
Menghapus elemen duplikat yang berdekatan atau elemen yang berdekatan yang memenuhi beberapa predikat biner lainnya dari daftar. |
Operator
Nama | Deskripsi |
---|---|
operator= |
Mengganti elemen daftar dengan salinan daftar lain. |
Persyaratan
Header: <list>
allocator_type
Jenis yang mewakili kelas alokator untuk objek daftar.
typedef Allocator allocator_type;
Keterangan
allocator_type
adalah sinonim untuk parameter Allocator
templat .
Contoh
Lihat contoh untuk get_allocator
.
assign
Menghapus elemen dari daftar dan menyalin sekumpulan elemen baru ke daftar 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
Posisi elemen pertama dalam rentang elemen yang akan disalin dari daftar argumen.
Last
Posisi elemen pertama tepat di luar rentang elemen yang akan disalin dari daftar argumen.
Count
Jumlah salinan elemen yang disisipkan ke dalam daftar.
Val
Nilai elemen yang disisipkan ke dalam daftar.
IList
Initializer_list yang berisi elemen yang akan disisipkan.
Keterangan
Setelah menghapus elemen yang ada dalam daftar target, tetapkan menyisipkan rentang elemen tertentu dari daftar asli atau dari beberapa daftar lain ke dalam daftar target atau menyisipkan salinan elemen baru dari nilai yang ditentukan ke dalam daftar target
Contoh
// list_assign.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main()
{
using namespace std;
list<int> c1, c2;
list<int>::const_iterator cIter;
c1.push_back(10);
c1.push_back(20);
c1.push_back(30);
c2.push_back(40);
c2.push_back(50);
c2.push_back(60);
cout << "c1 =";
for (auto c : c1)
cout << " " << c;
cout << endl;
c1.assign(++c2.begin(), c2.end());
cout << "c1 =";
for (auto c : c1)
cout << " " << c;
cout << endl;
c1.assign(7, 4);
cout << "c1 =";
for (auto c : c1)
cout << " " << c;
cout << endl;
c1.assign({ 10, 20, 30, 40 });
cout << "c1 =";
for (auto c : c1)
cout << " " << c;
cout << endl;
}
c1 = 10 20 30c1 = 50 60c1 = 4 4 4 4 4 4 4c1 = 10 20 30 40
back
Mengembalikan referensi ke elemen terakhir daftar.
reference back();
const_reference back() const;
Tampilkan Nilai
Elemen terakhir dari daftar. Jika daftar kosong, nilai pengembalian tidak ditentukan.
Keterangan
Jika nilai back
pengembalian ditetapkan ke const_reference
, objek daftar tidak dapat dimodifikasi. Jika nilai back
pengembalian ditetapkan ke reference
, objek daftar dapat dimodifikasi.
Saat dikompilasi dengan menggunakan _ITERATOR_DEBUG_LEVEL
yang didefinisikan sebagai 1 atau 2, kesalahan runtime akan terjadi jika Anda mencoba mengakses elemen dalam daftar kosong. Lihat Iterator yang Diperiksa untuk informasi selengkapnya.
Contoh
// list_back.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
c1.push_back( 10 );
c1.push_back( 11 );
int& i = c1.back( );
const int& ii = c1.front( );
cout << "The last integer of c1 is " << i << endl;
i--;
cout << "The next-to-last integer of c1 is " << ii << endl;
}
The last integer of c1 is 11
The next-to-last integer of c1 is 10
begin
Mengembalikan iterator yang menangani elemen pertama dalam daftar.
const_iterator begin() const;
iterator begin();
Tampilkan Nilai
Iterator dua arah yang membahas elemen pertama dalam daftar atau ke lokasi yang berhasil membuat daftar kosong.
Keterangan
Jika nilai begin
pengembalian ditetapkan ke const_iterator
, elemen dalam objek daftar tidak dapat dimodifikasi. Jika nilai begin
pengembalian ditetapkan ke iterator
, elemen dalam objek daftar dapat dimodifikasi.
Contoh
// list_begin.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter;
list <int>::const_iterator c1_cIter;
c1.push_back( 1 );
c1.push_back( 2 );
c1_Iter = c1.begin( );
cout << "The first element of c1 is " << *c1_Iter << endl;
*c1_Iter = 20;
c1_Iter = c1.begin( );
cout << "The first element of c1 is now " << *c1_Iter << endl;
// The following line would be an error because iterator is const
// *c1_cIter = 200;
}
The first element of c1 is 1
The first element of c1 is now 20
cbegin
Mengembalikan iterator const
yang membahas elemen pertama dalam rentang.
const_iterator cbegin() const;
Tampilkan Nilai
Iterator const
akses dua arah 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 bersama dengan auto
kata kunci pengurangan jenis, 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 const
akses dua arah 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 bersama dengan auto
kata kunci pengurangan jenis, 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.
void clear();
Contoh
// list_clear.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main() {
using namespace std;
list <int> c1;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
cout << "The size of the list is initially " << c1.size( ) << endl;
c1.clear( );
cout << "The size of list after clearing is " << c1.size( ) << endl;
}
The size of the list is initially 3
The size of list after clearing is 0
const_iterator
Jenis yang menyediakan iterator dua arah yang dapat membaca const
elemen dalam daftar.
typedef implementation-defined const_iterator;
Keterangan
Jenis const_iterator
tidak dapat digunakan untuk mengubah nilai elemen.
Contoh
Lihat contoh untuk back
.
const_pointer
Menyediakan penunjuk ke const
elemen dalam daftar.
typedef typename Allocator::const_pointer const_pointer;
Keterangan
Jenis const_pointer
tidak dapat digunakan untuk mengubah nilai elemen.
Dalam kebanyakan kasus, harus iterator
digunakan untuk mengakses elemen dalam objek daftar.
const_reference
Jenis yang menyediakan referensi ke elemen yang const
disimpan dalam daftar untuk membaca dan melakukan const
operasi.
typedef typename Allocator::const_reference const_reference;
Keterangan
Jenis const_reference
tidak dapat digunakan untuk mengubah nilai elemen.
Contoh
// list_const_ref.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
c1.push_back( 10 );
c1.push_back( 20 );
const list <int> c2 = c1;
const int &i = c2.front( );
const int &j = c2.back( );
cout << "The first element is " << i << endl;
cout << "The second element is " << j << endl;
// The following line would cause an error because c2 is const
// c2.push_back( 30 );
}
The first element is 10
The second element is 20
const_reverse_iterator
Jenis yang menyediakan iterator dua arah yang dapat membaca elemen apa pun const
dalam daftar.
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
Keterangan
Jenis const_reverse_iterator
tidak dapat mengubah nilai elemen dan digunakan untuk melakukan iterasi melalui daftar secara terbalik.
Contoh
Lihat contoh untuk rbegin
.
crbegin
Mengembalikan iterator const yang menangani elemen pertama dalam daftar terbalik.
const_reverse_iterator rbegin() const;
Tampilkan Nilai
Iterator dua arah terbalik const yang membahas elemen pertama dalam daftar terbalik (atau mengatasi apa yang telah menjadi elemen terakhir dalam yang tidak terbalik list
).
Keterangan
crbegin
digunakan dengan daftar terbalik seperti list::begin
yang digunakan dengan list
.
Dengan nilai crbegin
pengembalian , objek daftar tidak dapat dimodifikasi. list::rbegin
dapat digunakan untuk melakukan iterasi melalui daftar mundur.
Contoh
// list_crbegin.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::const_reverse_iterator c1_crIter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1_crIter = c1.crbegin( );
cout << "The last element in the list is " << *c1_crIter << "." << endl;
}
The last element in the list is 30.
crend
Mengembalikan iterator const yang membahas lokasi yang menggantikan elemen terakhir dalam daftar terbalik.
const_reverse_iterator rend() const;
Tampilkan Nilai
Iterator dua arah terbalik const yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik list
(lokasi yang telah mendahului elemen pertama dalam yang tidak terbalik list
).
Keterangan
crend
digunakan dengan daftar terbalik seperti list::end
yang digunakan dengan list
.
Dengan nilai crend
pengembalian , list
objek tidak dapat dimodifikasi.
crend
dapat digunakan untuk menguji apakah iterator terbalik telah mencapai akhir list
.
Nilai yang dikembalikan oleh crend
tidak boleh didereferensikan.
Contoh
// list_crend.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::const_reverse_iterator c1_crIter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1_crIter = c1.crend( );
c1_crIter --; // Decrementing a reverse iterator moves it forward in
// the list (to point to the first element here)
cout << "The first element in the list is: " << *c1_crIter << endl;
}
The first element in the list is: 10
difference_type
Jenis bilangan bulat bertanda tangan yang dapat digunakan untuk mewakili jumlah elemen daftar dalam rentang antara elemen yang diarahkan oleh iterator.
typedef typename Allocator::difference_type difference_type;
Keterangan
difference_type
adalah jenis yang dikembalikan saat mengurangi atau menambah melalui iterator kontainer. difference_type
biasanya digunakan untuk mewakili jumlah elemen dalam rentang [ first
, last
) antara iterator first
dan last
, termasuk elemen yang diarahkan oleh first
dan rentang elemen hingga, tetapi tidak termasuk, elemen yang ditunjukkan oleh last
.
Perhatikan bahwa meskipun difference_type
tersedia untuk semua iterator yang memenuhi persyaratan iterator input, yang mencakup kelas iterator dua arah yang didukung oleh kontainer yang dapat dibalik seperti set, pengurangan antara iterator hanya didukung oleh iterator akses acak yang disediakan oleh kontainer akses acak, seperti vector
Kelas.
Contoh
// list_diff_type.cpp
// compile with: /EHsc
#include <iostream>
#include <list>
#include <algorithm>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter, c2_Iter;
c1.push_back( 30 );
c1.push_back( 20 );
c1.push_back( 30 );
c1.push_back( 10 );
c1.push_back( 30 );
c1.push_back( 20 );
c1_Iter = c1.begin( );
c2_Iter = c1.end( );
list <int>::difference_type df_typ1, df_typ2, df_typ3;
df_typ1 = count( c1_Iter, c2_Iter, 10 );
df_typ2 = count( c1_Iter, c2_Iter, 20 );
df_typ3 = count( c1_Iter, c2_Iter, 30 );
cout << "The number '10' is in c1 collection " << df_typ1 << " times.\n";
cout << "The number '20' is in c1 collection " << df_typ2 << " times.\n";
cout << "The number '30' is in c1 collection " << df_typ3 << " times.\n";
}
The number '10' is in c1 collection 1 times.
The number '20' is in c1 collection 2 times.
The number '30' is in c1 collection 3 times.
emplace
Menyisipkan elemen yang dibangun di tempat ke dalam daftar pada posisi tertentu.
void emplace(iterator Where, Type&& val);
Parameter
Where
Posisi dalam target list
tempat elemen pertama dimasukkan.
val
Elemen ditambahkan ke akhir list
.
Keterangan
Jika pengecualian dilemparkan, dibiarkan list
tidak diubah dan pengecualian ditumbuhi kembali.
Contoh
// list_emplace.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
#include <string>
int main( )
{
using namespace std;
list <string> c2;
string str("a");
c2.emplace(c2.begin(), move( str ) );
cout << "Moved first element: " << c2.back( ) << endl;
}
Moved first element: a
emplace_back
Menambahkan elemen yang dibangun di tempat ke akhir daftar.
void emplace_back(Type&& val);
Parameter
val
Elemen ditambahkan ke akhir list
.
Keterangan
Jika pengecualian dilemparkan, dibiarkan list
tidak diubah dan pengecualian ditumbuhi kembali.
Contoh
// list_emplace_back.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
#include <string>
int main( )
{
using namespace std;
list <string> c2;
string str("a");
c2.emplace_back( move( str ) );
cout << "Moved first element: " << c2.back( ) << endl;
}
Moved first element: a
emplace_front
Menambahkan elemen yang dibangun di tempat ke awal daftar.
void emplace_front(Type&& val);
Parameter
val
Elemen ditambahkan ke awal list
.
Keterangan
Jika pengecualian dilemparkan, dibiarkan list
tidak diubah dan pengecualian ditumbuhi kembali.
Contoh
// list_emplace_front.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
#include <string>
int main( )
{
using namespace std;
list <string> c2;
string str("a");
c2.emplace_front( move( str ) );
cout << "Moved first element: " << c2.front( ) << endl;
}
Moved first element: a
empty
Menguji apakah daftar kosong.
bool empty() const;
Tampilkan Nilai
true
jika daftar kosong; false
jika daftar tidak kosong.
Contoh
// list_empty.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
c1.push_back( 10 );
if ( c1.empty( ) )
cout << "The list is empty." << endl;
else
cout << "The list is not empty." << endl;
}
The list is not empty.
end
Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam daftar.
const_iterator end() const;
iterator end();
Tampilkan Nilai
Iterator dua arah yang membahas lokasi yang menggantikan elemen terakhir dalam daftar. Jika daftar kosong, maka list::end == list::begin
.
Keterangan
end
digunakan untuk menguji apakah iterator telah mencapai akhir daftarnya.
Contoh
// list_end.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1_Iter = c1.end( );
c1_Iter--;
cout << "The last integer of c1 is " << *c1_Iter << endl;
c1_Iter--;
*c1_Iter = 400;
cout << "The new next-to-last integer of c1 is "
<< *c1_Iter << endl;
// If a const iterator had been declared instead with the line:
// list <int>::const_iterator c1_Iter;
// an error would have resulted when inserting the 400
cout << "The list is now:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
}
The last integer of c1 is 30
The new next-to-last integer of c1 is 400
The list is now: 10 400 30
erase
Menghapus elemen atau rentang elemen dalam daftar dari posisi yang ditentukan.
iterator erase(iterator Where);
iterator erase(iterator first, iterator last);
Parameter
Where
Posisi elemen yang akan dihapus dari daftar.
first
Posisi elemen pertama dihapus dari daftar.
last
Posisi tepat di luar elemen terakhir yang dihapus dari daftar.
Tampilkan Nilai
Iterator dua arah yang menunjuk elemen pertama yang tersisa di luar elemen apa pun yang dihapus, atau penunjuk ke akhir daftar jika tidak ada elemen tersebut.
Keterangan
Tidak ada realokasi yang terjadi, sehingga iterator dan referensi menjadi tidak valid hanya untuk elemen yang dihapus.
erase
tidak pernah melemparkan pengecualian.
Contoh
// list_erase.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator Iter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1.push_back( 40 );
c1.push_back( 50 );
cout << "The initial list is:";
for ( Iter = c1.begin( ); Iter != c1.end( ); Iter++ )
cout << " " << *Iter;
cout << endl;
c1.erase( c1.begin( ) );
cout << "After erasing the first element, the list becomes:";
for ( Iter = c1.begin( ); Iter != c1.end( ); Iter++ )
cout << " " << *Iter;
cout << endl;
Iter = c1.begin( );
Iter++;
c1.erase( Iter, c1.end( ) );
cout << "After erasing all elements but the first, the list becomes: ";
for (Iter = c1.begin( ); Iter != c1.end( ); Iter++ )
cout << " " << *Iter;
cout << endl;
}
The initial list is: 10 20 30 40 50
After erasing the first element, the list becomes: 20 30 40 50
After erasing all elements but the first, the list becomes: 20
front
Mengembalikan referensi ke elemen pertama dalam daftar.
reference front();
const_reference front() const;
Tampilkan Nilai
Jika daftar kosong, pengembalian tidak ditentukan.
Keterangan
Jika nilai front
pengembalian ditetapkan ke const_reference
, objek daftar tidak dapat dimodifikasi. Jika nilai front
pengembalian ditetapkan ke reference
, objek daftar dapat dimodifikasi.
Saat dikompilasi dengan menggunakan _ITERATOR_DEBUG_LEVEL
yang didefinisikan sebagai 1 atau 2, kesalahan runtime akan terjadi jika Anda mencoba mengakses elemen dalam daftar kosong. Lihat Iterator yang Diperiksa untuk informasi selengkapnya.
Contoh
// list_front.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main() {
using namespace std;
list <int> c1;
c1.push_back( 10 );
int& i = c1.front();
const int& ii = c1.front();
cout << "The first integer of c1 is " << i << endl;
i++;
cout << "The first integer of c1 is " << ii << endl;
}
The first integer of c1 is 10
The first integer of c1 is 11
get_allocator
Mengembalikan salinan objek alokator yang digunakan untuk membuat daftar.
Allocator get_allocator() const;
Tampilkan Nilai
Alokator yang digunakan oleh daftar.
Keterangan
Alokator untuk kelas daftar menentukan bagaimana kelas mengelola penyimpanan. Alokator default yang disediakan dengan kelas kontainer Pustaka Standar C++ cukup untuk sebagian besar kebutuhan pemrograman. Menulis dan menggunakan kelas alokator Anda sendiri adalah topik C++ tingkat lanjut.
Contoh
// list_get_allocator.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
// The following lines declare objects
// that use the default allocator.
list <int> c1;
list <int, allocator<int> > c2 = list <int, allocator<int> >( allocator<int>( ) );
// c3 will use the same allocator class as c1
list <int> c3( c1.get_allocator( ) );
list<int>::allocator_type xlst = c1.get_allocator( );
// You can now call functions on the allocator class used by c1
}
insert
Menyisipkan elemen atau sejumlah elemen atau rentang elemen ke dalam daftar pada posisi tertentu.
iterator insert(iterator Where, const Type& Val);
iterator insert(iterator Where, Type&& Val);
void insert(iterator Where, size_type Count, const Type& Val);
iterator insert(iterator Where, initializer_list<Type> IList);
template <class InputIterator>
void insert(iterator Where, InputIterator First, InputIterator Last);
Parameter
Where
Posisi dalam daftar target tempat elemen pertama disisipkan.
Val
Nilai elemen yang disisipkan ke dalam daftar.
Count
Jumlah elemen yang dimasukkan ke dalam daftar.
First
Posisi elemen pertama dalam rentang elemen dalam daftar argumen yang akan disalin.
Last
Posisi elemen pertama di luar rentang elemen dalam daftar argumen yang akan disalin.
Tampilkan Nilai
Dua fungsi sisipan pertama mengembalikan iterator yang menunjuk ke posisi di mana elemen baru dimasukkan ke dalam daftar.
Contoh
// list_class_insert.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
#include <string>
int main()
{
using namespace std;
list <int> c1, c2;
list <int>::iterator Iter;
c1.push_back(10);
c1.push_back(20);
c1.push_back(30);
c2.push_back(40);
c2.push_back(50);
c2.push_back(60);
cout << "c1 =";
for (auto c : c1)
cout << " " << c;
cout << endl;
Iter = c1.begin();
Iter++;
c1.insert(Iter, 100);
cout << "c1 =";
for (auto c : c1)
cout << " " << c;
cout << endl;
Iter = c1.begin();
Iter++;
Iter++;
c1.insert(Iter, 2, 200);
cout << "c1 =";
for(auto c : c1)
cout << " " << c;
cout << endl;
c1.insert(++c1.begin(), c2.begin(), --c2.end());
cout << "c1 =";
for (auto c : c1)
cout << " " << c;
cout << endl;
// initialize a list of strings by moving
list < string > c3;
string str("a");
c3.insert(c3.begin(), move(str));
cout << "Moved first element: " << c3.front() << endl;
// Assign with an initializer_list
list <int> c4{ {1, 2, 3, 4} };
c4.insert(c4.begin(), { 5, 6, 7, 8 });
cout << "c4 =";
for (auto c : c4)
cout << " " << c;
cout << endl;
}
iterator
Jenis yang menyediakan iterator dua arah yang dapat membaca atau memodifikasi elemen apa pun dalam daftar.
typedef implementation-defined iterator;
Keterangan
Jenis iterator
dapat digunakan untuk mengubah nilai elemen.
Contoh
Lihat contoh untuk begin
.
list
Membuat daftar ukuran tertentu atau dengan elemen nilai tertentu atau dengan alokator tertentu atau sebagai salinan semua atau bagian dari beberapa daftar lainnya.
list();
explicit list(const Allocator& Al);
explicit list(size_type Count);
list(size_type Count, const Type& Val);
list(size_type Count, const Type& Val, const Allocator& Al);
list(const list& Right);
list(list&& Right);
list(initializer_list<Type> IList, const Allocator& Al);
template <class InputIterator>
list(InputIterator First, InputIterator Last);
template <class InputIterator>
list(InputIterator First, InputIterator Last, const Allocator& Al);
Parameter
Al
Kelas alokator untuk digunakan dengan objek ini.
Count
Jumlah elemen dalam daftar yang dibangun.
Val
Nilai elemen dalam daftar.
Right
Daftar tempat daftar yang dibuat akan menjadi salinan.
First
Posisi elemen pertama dalam rentang elemen yang akan disalin.
Last
Posisi elemen pertama di luar rentang elemen yang akan disalin.
IList
initializer_list yang berisi elemen yang akan disalin.
Keterangan
Semua konstruktor menyimpan objek alokator (Al
) dan menginisialisasi daftar.
get_allocator
mengembalikan salinan objek alokator yang digunakan untuk membuat daftar.
Dua konstruktor pertama menentukan daftar awal kosong, yang kedua menentukan jenis alokator (Al
) yang akan digunakan.
Konstruktor ketiga menentukan pengulangan angka (Count
) elemen tertentu dari nilai default untuk kelas Type
.
Konstruktor keempat dan kelima menentukan pengulanganCount
() elemen nilai Val
.
Konstruktor keenam menentukan salinan daftar Right
.
Konstruktor ketujuh memindahkan daftar Right
.
Konstruktor kedelapan menggunakan initializer_list untuk menentukan elemen.
Dua konstruktor berikutnya menyalin rentang [First, Last)
daftar.
Tidak ada konstruktor yang melakukan realokasi sementara.
Contoh
// list_class_list.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main()
{
using namespace std;
// Create an empty list c0
list <int> c0;
// Create a list c1 with 3 elements of default value 0
list <int> c1(3);
// Create a list c2 with 5 elements of value 2
list <int> c2(5, 2);
// Create a list c3 with 3 elements of value 1 and with the
// allocator of list c2
list <int> c3(3, 1, c2.get_allocator());
// Create a copy, list c4, of list c2
list <int> c4(c2);
// Create a list c5 by copying the range c4[ first, last)
list <int>::iterator c4_Iter = c4.begin();
c4_Iter++;
c4_Iter++;
list <int> c5(c4.begin(), c4_Iter);
// Create a list c6 by copying the range c4[ first, last) and with
// the allocator of list c2
c4_Iter = c4.begin();
c4_Iter++;
c4_Iter++;
c4_Iter++;
list <int> c6(c4.begin(), c4_Iter, c2.get_allocator());
cout << "c1 =";
for (auto c : c1)
cout << " " << c;
cout << endl;
cout << "c2 =";
for (auto c : c2)
cout << " " << c;
cout << endl;
cout << "c3 =";
for (auto c : c3)
cout << " " << c;
cout << endl;
cout << "c4 =";
for (auto c : c4)
cout << " " << c;
cout << endl;
cout << "c5 =";
for (auto c : c5)
cout << " " << c;
cout << endl;
cout << "c6 =";
for (auto c : c6)
cout << " " << c;
cout << endl;
// Move list c6 to list c7
list <int> c7(move(c6));
cout << "c7 =";
for (auto c : c7)
cout << " " << c;
cout << endl;
// Construct with initializer_list
list<int> c8({ 1, 2, 3, 4 });
cout << "c8 =";
for (auto c : c8)
cout << " " << c;
cout << endl;
}
c1 = 0 0 0c2 = 2 2 2 2 2c3 = 1 1 1c4 = 2 2 2 2 2c5 = 2 2c6 = 2 2 2c7 = 2 2 2c8 = 1 2 3 4
max_size
Mengembalikan panjang maksimum daftar.
size_type max_size() const;
Tampilkan Nilai
Panjang maksimum yang mungkin dari daftar.
Contoh
// list_max_size.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::size_type i;
i = c1.max_size( );
cout << "Maximum possible length of the list is " << i << "." << endl;
}
merge
Menghapus elemen dari daftar argumen, menyisipkannya ke dalam daftar target, dan mengurutkan kumpulan elemen gabungan baru dalam urutan naik atau dalam beberapa urutan lain yang ditentukan.
void merge(list<Type, Allocator>& right);
template <class Traits>
void merge(list<Type, Allocator>& right, Traits comp);
Parameter
right
Daftar argumen yang akan digabungkan dengan daftar target.
comp
Operator perbandingan yang digunakan untuk mengurutkan elemen daftar target.
Keterangan
Daftar right
argumen digabungkan dengan daftar target.
Argumen dan daftar target harus diurutkan dengan hubungan perbandingan yang sama dengan urutan yang dihasilkan akan diurutkan. Urutan default untuk fungsi anggota pertama adalah urutan naik. Fungsi anggota kedua memberlakukan operasi comp
perbandingan kelas Traits
yang ditentukan pengguna .
Contoh
// list_merge.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1, c2, c3;
list <int>::iterator c1_Iter, c2_Iter, c3_Iter;
c1.push_back( 3 );
c1.push_back( 6 );
c2.push_back( 2 );
c2.push_back( 4 );
c3.push_back( 5 );
c3.push_back( 1 );
cout << "c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
cout << "c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
c2.merge( c1 ); // Merge c1 into c2 in (default) ascending order
c2.sort( greater<int>( ) );
cout << "After merging c1 with c2 and sorting with >: c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
cout << "c3 =";
for ( c3_Iter = c3.begin( ); c3_Iter != c3.end( ); c3_Iter++ )
cout << " " << *c3_Iter;
cout << endl;
c2.merge( c3, greater<int>( ) );
cout << "After merging c3 with c2 according to the '>' comparison relation: c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
}
c1 = 3 6
c2 = 2 4
After merging c1 with c2 and sorting with >: c2 = 6 4 3 2
c3 = 5 1
After merging c3 with c2 according to the '>' comparison relation: c2 = 6 5 4 3 2 1
operator=
Mengganti elemen daftar dengan salinan daftar lain.
list& operator=(const list& right);
list& operator=(list&& right);
Parameter
right
yang list
sedang disalin ke list
dalam .
Keterangan
Setelah menghapus elemen yang ada dalam list
, operator menyalin atau memindahkan konten right
ke list
dalam .
Contoh
// list_operator_as.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list<int> v1, v2, v3;
list<int>::iterator iter;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
cout << "v1 = " ;
for (iter = v1.begin(); iter != v1.end(); iter++)
cout << *iter << " ";
cout << endl;
v2 = v1;
cout << "v2 = ";
for (iter = v2.begin(); iter != v2.end(); iter++)
cout << *iter << " ";
cout << endl;
// move v1 into v2
v2.clear();
v2 = forward< list<int> >(v1);
cout << "v2 = ";
for (iter = v2.begin(); iter != v2.end(); iter++)
cout << *iter << " ";
cout << endl;
}
pointer
Menyediakan penunjuk ke elemen dalam daftar.
typedef typename Allocator::pointer pointer;
Keterangan
Jenis pointer
dapat digunakan untuk mengubah nilai elemen.
Dalam kebanyakan kasus, harus iterator
digunakan untuk mengakses elemen dalam objek daftar.
pop_back
Menghapus elemen di akhir daftar.
void pop_back();
Keterangan
Elemen terakhir tidak boleh kosong. pop_back
tidak pernah melemparkan pengecualian.
Contoh
// list_pop_back.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
c1.push_back( 1 );
c1.push_back( 2 );
cout << "The first element is: " << c1.front( ) << endl;
cout << "The last element is: " << c1.back( ) << endl;
c1.pop_back( );
cout << "After deleting the element at the end of the list, "
"the last element is: " << c1.back( ) << endl;
}
The first element is: 1
The last element is: 2
After deleting the element at the end of the list, the last element is: 1
pop_front
Menghapus elemen di awal daftar.
void pop_front();
Keterangan
Elemen pertama tidak boleh kosong. pop_front
tidak pernah melemparkan pengecualian.
Contoh
// list_pop_front.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
c1.push_back( 1 );
c1.push_back( 2 );
cout << "The first element is: " << c1.front( ) << endl;
cout << "The second element is: " << c1.back( ) << endl;
c1.pop_front( );
cout << "After deleting the element at the beginning of the list, "
"the first element is: " << c1.front( ) << endl;
}
The first element is: 1
The second element is: 2
After deleting the element at the beginning of the list, the first element is: 2
push_back
Menambahkan elemen ke akhir daftar.
void push_back(const Type& val);
void push_back(Type&& val);
Parameter
val
Elemen ditambahkan ke akhir daftar.
Keterangan
Jika pengecualian dilemparkan, daftar dibiarkan tidak diubah dan pengecualian ditumbuhi kembali.
Contoh
// list_push_back.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
#include <string>
int main( )
{
using namespace std;
list <int> c1;
c1.push_back( 1 );
if ( c1.size( ) != 0 )
cout << "Last element: " << c1.back( ) << endl;
c1.push_back( 2 );
if ( c1.size( ) != 0 )
cout << "New last element: " << c1.back( ) << endl;
// move initialize a list of strings
list <string> c2;
string str("a");
c2.push_back( move( str ) );
cout << "Moved first element: " << c2.back( ) << endl;
}
Last element: 1
New last element: 2
Moved first element: a
push_front
Menambahkan elemen ke awal daftar.
void push_front(const Type& val);
void push_front(Type&& val);
Parameter
val
Elemen ditambahkan ke awal daftar.
Keterangan
Jika pengecualian dilemparkan, daftar dibiarkan tidak diubah dan pengecualian ditumbuhi kembali.
Contoh
// list_push_front.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
#include <string>
int main( )
{
using namespace std;
list <int> c1;
c1.push_front( 1 );
if ( c1.size( ) != 0 )
cout << "First element: " << c1.front( ) << endl;
c1.push_front( 2 );
if ( c1.size( ) != 0 )
cout << "New first element: " << c1.front( ) << endl;
// move initialize a list of strings
list <string> c2;
string str("a");
c2.push_front( move( str ) );
cout << "Moved first element: " << c2.front( ) << endl;
}
First element: 1
New first element: 2
Moved first element: a
rbegin
Mengembalikan iterator yang membahas elemen pertama dalam daftar terbalik.
const_reverse_iterator rbegin() const;
reverse_iterator rbegin();
Tampilkan Nilai
Iterator dua arah terbalik yang membahas elemen pertama dalam daftar terbalik (atau mengatasi apa yang telah menjadi elemen terakhir dalam daftar yang tidak terbalik).
Keterangan
rbegin
digunakan dengan daftar terbalik seperti begin
yang digunakan dengan daftar.
Jika nilai rbegin
pengembalian ditetapkan ke const_reverse_iterator
, objek daftar tidak dapat dimodifikasi. Jika nilai rbegin
pengembalian ditetapkan ke reverse_iterator
, objek daftar dapat dimodifikasi.
rbegin
dapat digunakan untuk melakukan iterasi melalui daftar mundur.
Contoh
// list_rbegin.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter;
list <int>::reverse_iterator c1_rIter;
// If the following line replaced the line above, *c1_rIter = 40;
// (below) would be an error
//list <int>::const_reverse_iterator c1_rIter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1_rIter = c1.rbegin( );
cout << "The last element in the list is " << *c1_rIter << "." << endl;
cout << "The list is:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
// rbegin can be used to start an iteration through a list in
// reverse order
cout << "The reversed list is:";
for ( c1_rIter = c1.rbegin( ); c1_rIter != c1.rend( ); c1_rIter++ )
cout << " " << *c1_rIter;
cout << endl;
c1_rIter = c1.rbegin( );
*c1_rIter = 40;
cout << "The last element in the list is now " << *c1_rIter << "." << endl;
}
The last element in the list is 30.
The list is: 10 20 30
The reversed list is: 30 20 10
The last element in the list is now 40.
reference
Jenis yang menyediakan referensi ke elemen yang disimpan dalam daftar.
typedef typename Allocator::reference reference;
Contoh
// list_ref.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
c1.push_back( 10 );
c1.push_back( 20 );
int &i = c1.front( );
int &j = c1.back( );
cout << "The first element is " << i << endl;
cout << "The second element is " << j << endl;
}
The first element is 10
The second element is 20
remove
Menghapus elemen dalam daftar 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
Urutan elemen yang tersisa tidak terpengaruh.
Contoh
// list_remove.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter, c2_Iter;
c1.push_back( 5 );
c1.push_back( 100 );
c1.push_back( 5 );
c1.push_back( 200 );
c1.push_back( 5 );
c1.push_back( 300 );
cout << "The initial list is c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
list <int> c2 = c1;
c2.remove( 5 );
cout << "After removing elements with value 5, the list becomes c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
}
The initial list is c1 = 5 100 5 200 5 300
After removing elements with value 5, the list becomes c2 = 100 200 300
remove_if
Menghapus elemen dari daftar yang predikatnya ditentukan terpenuhi.
template <class Predicate>
void remove_if(Predicate pred)
Parameter
pred
Predikat unary yang, jika dipenuhi oleh elemen, menghasilkan penghapusan elemen tersebut dari daftar.
Contoh
// list_remove_if.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
template <class T> class is_odd : public std::unary_function<T, bool>
{
public:
bool operator( ) ( T& val )
{
return ( val % 2 ) == 1;
}
};
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter, c2_Iter;
c1.push_back( 3 );
c1.push_back( 4 );
c1.push_back( 5 );
c1.push_back( 6 );
c1.push_back( 7 );
c1.push_back( 8 );
cout << "The initial list is c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
list <int> c2 = c1;
c2.remove_if( is_odd<int>( ) );
cout << "After removing the odd elements, "
<< "the list becomes c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
}
The initial list is c1 = 3 4 5 6 7 8
After removing the odd elements, the list becomes c2 = 4 6 8
rend
Mengembalikan iterator yang membahas lokasi yang mengikuti elemen terakhir dalam daftar terbalik.
const_reverse_iterator rend() const;
reverse_iterator rend();
Tampilkan Nilai
Iterator dua arah terbalik yang membahas lokasi yang menggantikan elemen terakhir dalam daftar terbalik (lokasi yang telah mendahului elemen pertama dalam daftar yang tidak terbalik).
Keterangan
rend
digunakan dengan daftar terbalik seperti end
yang digunakan dengan daftar.
Jika nilai rend
pengembalian ditetapkan ke const_reverse_iterator
, objek daftar tidak dapat dimodifikasi. Jika nilai rend
pengembalian ditetapkan ke reverse_iterator
, objek daftar dapat dimodifikasi.
rend
dapat digunakan untuk menguji apakah iterator terbalik telah mencapai akhir daftarnya.
Nilai yang dikembalikan oleh rend
tidak boleh didereferensikan.
Contoh
// list_rend.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter;
list <int>::reverse_iterator c1_rIter;
// If the following line had replaced the line above, an error would
// have resulted in the line modifying an element (commented below)
// because the iterator would have been const
// list <int>::const_reverse_iterator c1_rIter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1_rIter = c1.rend( );
c1_rIter --; // Decrementing a reverse iterator moves it forward in
// the list (to point to the first element here)
cout << "The first element in the list is: " << *c1_rIter << endl;
cout << "The list is:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
// rend can be used to test if an iteration is through all of the
// elements of a reversed list
cout << "The reversed list is:";
for ( c1_rIter = c1.rbegin( ); c1_rIter != c1.rend( ); c1_rIter++ )
cout << " " << *c1_rIter;
cout << endl;
c1_rIter = c1.rend( );
c1_rIter--; // Decrementing the reverse iterator moves it backward
// in the reversed list (to the last element here)
*c1_rIter = 40; // This modification of the last element would have
// caused an error if a const_reverse iterator had
// been declared (as noted above)
cout << "The modified reversed list is:";
for ( c1_rIter = c1.rbegin( ); c1_rIter != c1.rend( ); c1_rIter++ )
cout << " " << *c1_rIter;
cout << endl;
}
The first element in the list is: 10
The list is: 10 20 30
The reversed list is: 30 20 10
The modified reversed list is: 30 20 40
resize
Menentukan ukuran baru untuk daftar.
void resize(size_type _Newsize);
void resize(size_type _Newsize, Type val);
Parameter
_Newsize
Ukuran baru daftar.
val
Nilai elemen baru yang akan ditambahkan ke daftar jika ukuran baru lebih besar dari ukuran aslinya. Jika nilai dihilangkan, elemen baru diberi nilai default untuk kelas .
Keterangan
Jika ukuran daftar kurang dari ukuran yang diminta, _Newsize
, elemen ditambahkan ke daftar hingga mencapai ukuran yang diminta.
Jika ukuran daftar lebih besar dari ukuran yang diminta, elemen yang paling dekat dengan akhir daftar dihapus hingga daftar mencapai ukuran _Newsize
.
Jika ukuran daftar saat ini sama dengan ukuran yang diminta, tidak ada tindakan yang diambil.
size
mencerminkan ukuran daftar saat ini.
Contoh
// list_resize.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1.resize( 4,40 );
cout << "The size of c1 is " << c1.size( ) << endl;
cout << "The value of the last element is " << c1.back( ) << endl;
c1.resize( 5 );
cout << "The size of c1 is now " << c1.size( ) << endl;
cout << "The value of the last element is now " << c1.back( ) << endl;
c1.resize( 2 );
cout << "The reduced size of c1 is: " << c1.size( ) << endl;
cout << "The value of the last element is now " << c1.back( ) << endl;
}
The size of c1 is 4
The value of the last element is 40
The size of c1 is now 5
The value of the last element is now 0
The reduced size of c1 is: 2
The value of the last element is now 20
reverse
Membalikkan urutan terjadinya elemen dalam daftar.
void reverse();
Contoh
// list_reverse.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
cout << "c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
c1.reverse( );
cout << "Reversed c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
}
c1 = 10 20 30
Reversed c1 = 30 20 10
reverse_iterator
Jenis yang menyediakan iterator dua arah yang dapat membaca atau memodifikasi elemen dalam daftar terbalik.
typedef std::reverse_iterator<iterator> reverse_iterator;
Keterangan
Jenis reverse_iterator
digunakan untuk mengulangi daftar secara terbalik.
Contoh
Lihat contoh untuk rbegin
.
size
Mengembalikan jumlah elemen dalam daftar.
size_type size() const;
Tampilkan Nilai
Panjang daftar saat ini.
Contoh
// list_size.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::size_type i;
c1.push_back( 5 );
i = c1.size( );
cout << "List length is " << i << "." << endl;
c1.push_back( 7 );
i = c1.size( );
cout << "List length is now " << i << "." << endl;
}
List length is 1.
List length is now 2.
size_type
Jenis yang menghitung jumlah elemen dalam daftar.
typedef typename Allocator::size_type size_type;
Contoh
Lihat contoh untuk size
.
sort
Mengatur elemen daftar dalam urutan naik atau sehubungan dengan beberapa urutan lain yang ditentukan pengguna.
void sort();
template <class Traits>
void sort(Traits comp);
Parameter
comp
Operator perbandingan yang digunakan untuk memesan elemen berturut-turut.
Keterangan
Fungsi anggota pertama menempatkan elemen dalam urutan naik secara default.
Fungsi templat anggota mengurutkan elemen sesuai dengan operasi comp
perbandingan kelas Traits
yang ditentukan pengguna .
Contoh
// list_sort.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter;
c1.push_back( 20 );
c1.push_back( 10 );
c1.push_back( 30 );
cout << "Before sorting: c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
c1.sort( );
cout << "After sorting c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
c1.sort( greater<int>( ) );
cout << "After sorting with 'greater than' operation, c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
}
Before sorting: c1 = 20 10 30
After sorting c1 = 10 20 30
After sorting with 'greater than' operation, c1 = 30 20 10
splice
Menghapus elemen dari daftar sumber dan menyisipkannya ke dalam daftar tujuan.
// insert the entire source list
void splice(const_iterator Where, list<Type, Allocator>& Source);
void splice(const_iterator Where, list<Type, Allocator>&& Source);
// insert one element of the source list
void splice(const_iterator Where, list<Type, Allocator>& Source, const_iterator Iter);
void splice(const_iterator Where, list<Type, Allocator>&& Source, const_iterator Iter);
// insert a range of elements from the source list
void splice(const_iterator Where, list<Type, Allocator>& Source, const_iterator First, const_iterator Last);
void splice(const_iterator Where, list<Type, Allocator>&& Source, const_iterator First, const_iterator Last);
Parameter
Where
Posisi dalam daftar tujuan yang sebelumnya akan disisipkan.
Source
Daftar sumber yang akan disisipkan ke dalam daftar tujuan.
Iter
Elemen yang akan disisipkan dari daftar sumber.
First
Elemen pertama dalam rentang yang akan disisipkan dari daftar sumber.
Last
Posisi pertama di luar elemen terakhir dalam rentang yang akan disisipkan dari daftar sumber.
Keterangan
Pasangan pertama fungsi anggota menyisipkan semua elemen dalam daftar sumber ke dalam daftar tujuan sebelum posisi yang dirujuk oleh Where
dan menghapus semua elemen dari daftar sumber. (&Source
tidak boleh sama dengan this
.)
Pasangan kedua fungsi anggota menyisipkan elemen yang dirujuk oleh Iter
sebelum posisi dalam daftar tujuan yang dirujuk oleh Where
dan menghapus Iter dari daftar sumber. (Jika Where == Iter || Where == ++Iter
, tidak ada perubahan yang terjadi.)
Pasangan ketiga fungsi anggota menyisipkan rentang yang ditunjuk oleh [ First
, Last
) sebelum elemen dalam daftar tujuan yang dirujuk oleh Where
dan menghapus rentang elemen tersebut dari daftar sumber. (Jika &Source == this
, rentang [First, Last)
tidak boleh menyertakan elemen yang ditujukkan ke . Where
)
Jika splice berkisar N
menyisipkan elemen, dan &Source != this
, objek kelas iterator
akan mengalami peningkatan N
waktu.
Dalam semua kasus iterator, pointer, atau referensi yang merujuk ke elemen spliced tetap valid dan ditransfer ke kontainer tujuan.
Contoh
// list_splice.cpp
// compile with: /EHsc /W4
#include <list>
#include <iostream>
using namespace std;
template <typename S> void print(const S& s) {
cout << s.size() << " elements: ";
for (const auto& p : s) {
cout << "(" << p << ") ";
}
cout << endl;
}
int main()
{
list<int> c1{10,11};
list<int> c2{20,21,22};
list<int> c3{30,31};
list<int> c4{40,41,42,43};
list<int>::iterator where_iter;
list<int>::iterator first_iter;
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(where_iter, c1);
cout << "After splicing c1 into c2:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
first_iter = c3.begin();
c2.splice(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;
--last_iter;
c2.splice(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 = 2 elements: (10) (11)c2 = 3 elements: (20) (21) (22)c3 = 2 elements: (30) (31)c4 = 4 elements: (40) (41) (42) (43)After splicing c1 into c2:c1 = 0 elements:c2 = 5 elements: (20) (10) (11) (21) (22)After splicing the first element of c3 into c2:c3 = 1 elements: (31)c2 = 6 elements: (20) (10) (11) (30) (21) (22)After splicing a range of c4 into c2:c4 = 2 elements: (40) (43)c2 = 8 elements: (20) (10) (11) (30) (41) (42) (21) (22)
swap
Menukar elemen dari dua daftar.
void swap(list<Type, Allocator>& right);
friend void swap(list<Type, Allocator>& left, list<Type, Allocator>& right)
Parameter
right
Daftar yang menyediakan elemen yang akan ditukar, atau daftar yang elemennya akan ditukar dengan elemen daftar left
.
left
Daftar yang elemennya akan ditukar dengan daftar right
.
Contoh
// list_swap.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1, c2, c3;
list <int>::iterator c1_Iter;
c1.push_back( 1 );
c1.push_back( 2 );
c1.push_back( 3 );
c2.push_back( 10 );
c2.push_back( 20 );
c3.push_back( 100 );
cout << "The original list c1 is:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
c1.swap( c2 );
cout << "After swapping with c2, list c1 is:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
swap( c1,c3 );
cout << "After swapping with c3, list c1 is:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
}
The original list c1 is: 1 2 3
After swapping with c2, list c1 is: 10 20
After swapping with c3, list c1 is: 100
unique
Menghapus elemen duplikat yang berdekatan atau elemen yang berdekatan yang memenuhi beberapa predikat biner lainnya dari daftar.
void unique();
template <class BinaryPredicate>
void unique(BinaryPredicate pred);
Parameter
pred
Predikat biner digunakan untuk membandingkan elemen berturut-turut.
Keterangan
Fungsi ini mengasumsikan bahwa daftar diurutkan, sehingga semua elemen duplikat berdekatan. Duplikat yang tidak berdekatan tidak akan dihapus.
Fungsi anggota pertama menghapus setiap elemen yang dibandingkan dengan elemen sebelumnya.
Fungsi anggota kedua menghapus setiap elemen yang memenuhi fungsi pred
predikat jika dibandingkan dengan elemen sebelumnya. Anda dapat menggunakan salah satu objek fungsi biner yang dideklarasikan di <functional>
header untuk argumen pred
atau Anda dapat membuat objek anda sendiri.
Contoh
// list_unique.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter, c2_Iter,c3_Iter;
not_equal_to<int> mypred;
c1.push_back( -10 );
c1.push_back( 10 );
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 20 );
c1.push_back( -10 );
cout << "The initial list is c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
list <int> c2 = c1;
c2.unique( );
cout << "After removing successive duplicate elements, c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
list <int> c3 = c2;
c3.unique( mypred );
cout << "After removing successive unequal elements, c3 =";
for ( c3_Iter = c3.begin( ); c3_Iter != c3.end( ); c3_Iter++ )
cout << " " << *c3_Iter;
cout << endl;
}
The initial list is c1 = -10 10 10 20 20 -10
After removing successive duplicate elements, c2 = -10 10 20 -10
After removing successive unequal elements, c3 = -10 -10
value_type
Jenis yang mewakili jenis data yang disimpan dalam daftar.
typedef typename Allocator::value_type value_type;
Keterangan
value_type
adalah sinonim untuk parameter Type
templat .
Contoh
// list_value_type.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list<int>::value_type AnInt;
AnInt = 44;
cout << AnInt << endl;
}
44