Home  >  Article  >  Backend Development  >  Examples of how to use STL list in C++

Examples of how to use STL list in C++

PHPz
PHPzOriginal
2017-04-12 15:03:341806browse

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

##destructorDestructor##operator=assignfrontbackbeginendrbeginrendpush_backpush_frontpop_backpop_frontcleareraseremove remove_if empty
##list members

Description

constructor

Constructor

##Assignment overloaded operator

Assign value

Returns a reference to the first element

Returns a reference to the last element

Returns the iterator of the first element

Returns the iterator at the next position of the last element

Returns the backward pointer reverse_iterator of the last element of the linked list

Return the reverse_iterator at the next position of the first element of the linked list

Add a data to the end of the linked list

Add a data to the head of the linked list

Delete an element at the end of the linked list

Delete one element from the head of the linked list

Delete all elements

Delete an element or a range of elements (two overloads)

Delete elements with matching values ​​in the linked list (all matching elements are deleted)

Delete elements that meet the conditions (traverse the linked list once), the parameter is a custom callback function

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn