This article mainly introduces the detailed explanation and simple examples of STL list in C++. Friends who need it can refer to it
The detailed explanation of STL list in C++
1. List: The internal implementation is a doubly linked list, which can efficiently perform insertion and deletion, but cannot perform random access
2. Sample program:
#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"); }
Run result picture:
3. List method
##list members | Description |
constructor | Constructor |
Destructor | |
##Assignment overloaded operator |
assign |
Assign value |
front |
Returns a reference to the first element |
back |
Returns a reference to the last element |
begin |
Returns the iterator of the first element |
| end
Returns the iterator at the next position of the last element |
rbegin |
Returns the backward pointer reverse_iterator of the last element of the linked list |
rend |
Return the reverse_iterator at the next position of the first element of the linked list |
push_back |
Add a data to the end of the linked list |
push_front |
Add a data to the head of the linked list |
pop_back |
Delete an element at the end of the linked list |
pop_front |
Delete one element from the head of the linked list |
clear |
Delete all elements | erase |
Delete an element or a range of elements (two overloads) |
remove |
Delete elements with matching values in the linked list (all matching elements are deleted) |
remove_if |
Delete elements that meet the conditions (traverse the linked list once), the parameter is a custom callback function |
empty |
Determine whether the linked list is empty |
##max_size |
Return The maximum possible length of the linked list | size |
Returns the number of elements in the linked list | resize |
Redefine the length of the linked list (two overloaded functions) | reverse |
Reverse linked list | sort |
Sort the linked list , default ascending order | merge |
Merge two ordered linked lists and make them ordered | splice |
Combine two linked lists (three overloaded functions) and clear the second linked list after combining | insert |
Insert one or more elements at the specified position (three overloaded functions) | swap |
Swap two linked lists (two overloads) | unique |
Delete adjacent duplicate elements |
The above is the detailed content of Examples of how to use STL list in C++. For more information, please follow other related articles on the PHP Chinese website!

实现定制比较器可以通过创建一个类,重载运算符()来实现,该运算符接受两个参数并指示比较结果。例如,StringLengthComparator类通过比较字符串长度来排序字符串:创建一个类并重载运算符(),返回布尔值指示比较结果。在容器算法中使用定制比较器进行排序。通过定制比较器,我们可以根据自定义标准对数据进行排序或比较,即使需要使用自定义比较标准。

通过使用容器的size()成员函数,可以获取容器中元素的数量。例如,vector容器的size()函数返回元素数量,list容器的size()函数返回元素数量,string容器的length()函数返回字符数量,deque容器的capacity()函数返回分配的内存块数量。

使用STL函数对象可提高可重用性,包含以下步骤:定义函数对象接口(创建类并继承自std::unary_function或std::binary_function)重载operator()以定义函数行为在重载的operator()中实现所需的功能通过STL算法(如std::transform)使用函数对象

C++STL哈希冲突的处理方式有:链地址法:使用链表存储冲突元素,适用性好。开放寻址法:在桶中查找可用位置存储元素,子方法有:线性探测:按顺序查找下一个可用位置。二次探测:以二次方形式跳过位置进行查找。

C++STL中最常见的容器类型分别是Vector、List、Deque、Set、Map、Stack和Queue。这些容器为不同的数据存储需求提供了解决方案,例如动态数组、双向链表和基于键和值的关联容器。实战中,我们可以使用STL容器高效地组织和访问数据,例如存储学生成绩。

通过利用C++标准模板库(STL),我们可以提升代码的可读性和维护性:1.使用容器取代原始数组,提高类型安全性和内存管理;2.利用算法简化复杂任务,提高效率;3.使用迭代器增强遍历,简化代码;4.使用智能指针提升内存管理,减少内存泄漏和悬垂指针。

C++中对STL容器排序的方法:使用sort()函数,原地排序容器,如std::vector。使用有序容器std::set和std::map,元素在插入时自动排序。对于自定义排序顺序,可以使用自定义比较器类,如按字母顺序排序字符串向量。

C++STL(StandardTemplateLibrary)是C++程序语言的标准库之一,它包含了一系列的标准数据结构和算法。在STL中,迭代器(iterator)是一种非常重要的工具,用于在STL的容器中进行遍历和访问。迭代器是一个类似于指针的对象,它可以指向容器(例如vector、list、set、map等)中的某个元素,并可以在容器中进行移动、


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Dreamweaver CS6
Visual web development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool
