Rumah pembangunan bahagian belakang Tutorial C#.Net C++中 STL list使用方法实例

C++中 STL list使用方法实例

Apr 12, 2017 pm 03:03 PM
list stl

这篇文章主要介绍了C++中 STL list详解及简单实例的相关资料,需要的朋友可以参考下

C++中 STL list详解

1、List: 内部实现是一个双向链表,可以高效的进行插入删除,但不能够进行随机访问

2.、示例程序:


#include "stdafx.h" 
#include <iostream> 
#include <list> 
#include <iterator> 
#include <algorithm> 
using namespace std; 
const int num[5] = {1,3,2,4,5}; 
bool status(const int & value) 
{ 
 return value>6?true:false; 
} 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
 list<int> list1; 
 copy(num,num+5,back_insert_iterator<list<int>>(list1)); 
 copy(list1.begin(),list1.end(),ostream_iterator<int>(cout," ")); 
 cout<<endl; 
 list1.sort(greater<int>());//5 4 3 2 1 
 copy(list1.begin(),list1.end(),ostream_iterator<int>(cout," ")); 
 cout<<endl; 
 list<int>::iterator it = list1.begin(); 
 while (it != list1.end()) 
 { 
  (*it) += 2; 
  it++; 
 } 
 //7 6 5 4 3 
 list<int>::reverse_iterator re_it = list1.rbegin(); 
 cout<<"从后向前输出: "; 
 while (re_it != list1.rend()) 
 { 
  cout<<*re_it<<" "; 
  re_it++; 
 } 
 cout<<endl; 
 list1.reverse();// 3 4 5 6 7 
 list1.push_back(8);//3 4 5 6 7 8 
 list1.pop_front();//4 5 6 7 8 
 list1.remove(6);//4 5 7 8 
 list1.remove_if(status);// 4 5 
 list1.resize(4);// 4 5 0 0 
 list1.resize(6,1);// 4 5 0 0 1 1 
 list1.unique();//4 5 0 1 
 copy(list1.begin(),list1.end(),ostream_iterator<int>(cout," ")); 
 cout<<endl; 
 list1.clear(); 
 cout<<"当前list1含有元素个数:"<<list1.size()<<endl; 
 list1.push_back(7);//list1:7 
 list<int> list2(3,2);//2 2 2 
 list2.merge(list1,greater<int>());//list2: 7 2 2 2 
 list2.insert(++list2.begin(),3);//list2: 7 3 2 2 2 
 list2.swap(list1);//list1:7 3 2 2 2 list2:empty 
 list1.erase(++list1.begin(),list1.end());// 7 
 copy(list1.begin(),list1.end(),ostream_iterator<int>(cout," ")); 
 cout<<endl; 
 system("pause"); 
}
Salin selepas log masuk

运行结果图片:


3、List 方法 

list成员

说明

constructor

构造函数

destructor

析构函数

operator=

赋值重载运算符

assign

分配值

front

返回第一个元素的引用

back

返回最后一元素的引用

begin

返回第一个元素的iterator

end

返回最后一个元素的下一位置的iterator

rbegin

返回链表最后一元素的后向指针reverse_iterator

rend

返回链表第一元素的下一位置的reverse_iterator

push_back

增加一个数据到链表尾

push_front

增加一个数据到链表头

pop_back

删除链表尾的一个元素

pop_front

删除链表头的一元素

clear

删除所有元素

erase

删除一个元素或一个区域的元素(两个重载)

remove 

删除链表中匹配值的元素(匹配元素全部删除)

remove_if

删除条件满足的元素(遍历一次链表),参数为自定义的回调函数

empty

判断是否链表为空

max_size

返回链表最大可能长度

size

返回链表中元素个数

resize

重新定义链表长度(两重载函数)

reverse

反转链表

sort 

对链表排序,默认升序

merge

合并两个有序链表并使之有序

splice 

对两个链表进行结合(三个重载函数) 结合后第二个链表清空

insert

在指定位置插入一个或多个元素(三个重载函数)

swap

交换两个链表(两个重载)

unique 

删除相邻重复元素 

Atas ialah kandungan terperinci C++中 STL list使用方法实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan pembanding tersuai dalam C++ STL? Bagaimana untuk melaksanakan pembanding tersuai dalam C++ STL? Jun 05, 2024 am 11:50 AM

Melaksanakan pembanding tersuai boleh dicapai dengan mencipta kelas yang membebankan operator(), yang menerima dua parameter dan menunjukkan hasil perbandingan. Sebagai contoh, kelas StringLengthComparator mengisih rentetan dengan membandingkan panjangnya: Buat kelas dan operator beban lampau(), mengembalikan nilai Boolean yang menunjukkan hasil perbandingan. Menggunakan pembanding tersuai untuk mengisih dalam algoritma bekas. Pembanding tersuai membolehkan kami mengisih atau membandingkan data berdasarkan kriteria tersuai, walaupun kami perlu menggunakan kriteria perbandingan tersuai.

Bagaimana untuk melaksanakan operasi Senarai Redis dalam php Bagaimana untuk melaksanakan operasi Senarai Redis dalam php May 26, 2023 am 11:51 AM

Operasi senarai //Masukkan nilai daripada kepala senarai. $ret=$redis->lPush('city','guangzhou');//Masukkan nilai dari hujung senarai. $ret=$redis->rPush('city','guangzhou');//Dapatkan elemen dalam julat senarai yang ditentukan. 0 mewakili elemen pertama dalam senarai, -1 mewakili elemen terakhir, dan -2 mewakili elemen terakhir. $ret=$redis->l

Bagaimana untuk mendapatkan saiz bekas C++ STL? Bagaimana untuk mendapatkan saiz bekas C++ STL? Jun 05, 2024 pm 06:20 PM

Anda boleh mendapatkan bilangan elemen dalam bekas dengan menggunakan fungsi ahli saiz() bekas. Contohnya, fungsi saiz() bekas vektor mengembalikan bilangan elemen, fungsi saiz() bekas senarai mengembalikan bilangan elemen, fungsi panjang() bekas rentetan mengembalikan bilangan aksara dan kapasiti() fungsi bekas deque mengembalikan bilangan blok memori yang diperuntukkan.

Bagaimana untuk mereka bentuk objek fungsi STL tersuai untuk meningkatkan kebolehgunaan semula kod? Bagaimana untuk mereka bentuk objek fungsi STL tersuai untuk meningkatkan kebolehgunaan semula kod? Apr 25, 2024 pm 02:57 PM

Menggunakan objek fungsi STL boleh meningkatkan kebolehgunaan semula dan termasuk langkah-langkah berikut: Tentukan antara muka objek fungsi (buat kelas dan warisi daripada std::unary_function atau std::binary_function) Overload operator() untuk mentakrifkan kelakuan fungsi dalam operator terlampau beban() Laksanakan fungsi yang diperlukan menggunakan objek fungsi melalui algoritma STL (seperti std::transform)

Bagaimana untuk menangani perlanggaran cincang apabila menggunakan C++ STL? Bagaimana untuk menangani perlanggaran cincang apabila menggunakan C++ STL? Jun 01, 2024 am 11:06 AM

Kaedah untuk mengendalikan konflik cincang C++STL ialah: kaedah alamat rantai: menggunakan senarai terpaut untuk menyimpan elemen bercanggah, yang mempunyai kebolehgunaan yang baik. Kaedah pengalamatan terbuka: Cari lokasi yang tersedia dalam baldi untuk menyimpan elemen Sub-kaedah ialah: Pengesanan linear: Cari lokasi tersedia seterusnya dalam urutan. Pengesanan Kuadratik: Cari dengan melangkau kedudukan dalam bentuk kuadratik.

Bagaimana untuk menukar JSONArray ke Senarai di Jawa Bagaimana untuk menukar JSONArray ke Senarai di Jawa May 04, 2023 pm 05:25 PM

1:JSONArray转ListJSONArray字符串转List//初始化JSONArrayJSONArrayarray=newJSONArray();array.add(0,"a");array.add(1,"b");array.add(2,"c") ;Listlist=JSONObject.parseArray(array.toJSONString(),String.class);System.out.println(list.to

Bagaimana untuk mengisih bekas C++ STL? Bagaimana untuk mengisih bekas C++ STL? Jun 02, 2024 pm 08:22 PM

Cara mengisih bekas STL dalam C++: Gunakan fungsi sort() untuk mengisih bekas di tempatnya, seperti std::vector. Menggunakan bekas yang dipesan std::set dan std::map, elemen diisih secara automatik semasa sisipan. Untuk susunan isihan tersuai, anda boleh menggunakan kelas pembanding tersuai, seperti mengisih vektor rentetan mengikut abjad.

Apakah jenis biasa dalam bekas C++ STL? Apakah jenis biasa dalam bekas C++ STL? Jun 02, 2024 pm 02:11 PM

Jenis bekas yang paling biasa dalam C++STL ialah Vektor, Senarai, Deque, Set, Map, Stack dan Queue. Bekas ini menyediakan penyelesaian untuk keperluan penyimpanan data yang berbeza, seperti tatasusunan dinamik, senarai berganda dan bekas bersekutu berasaskan kunci dan nilai. Dalam amalan, kami boleh menggunakan bekas STL untuk menyusun dan mengakses data dengan cekap, seperti menyimpan gred pelajar.

See all articles