当前位置:网站首页>One week learning summary of STL Standard Template Library

One week learning summary of STL Standard Template Library

2022-07-07 23:25:00 zjsru_ Beginner

In the face of STL In the process of learning , I have a certain basic understanding of containers , Containers are divided into 8 Parts of +2 Operations .

  1. list( list )
  2. stack( Stack - Elements come in and out )
  3. queue( queue - Element first in first out )
  4. priority_queue( Priority queue ,)
  5. deque( deque )
  6. vector( vector )
  7. set/multiset/bitset( aggregate )
  8. map/multimap
  9. sort( The sorting operation )
  10. reverse /random_shuffle/unique( The horse / Generate random number / Delete adjacent data fetches and keep only one )

Briefly introduce the common features of containers, namely, general functions :

  • .begin()// Initial address
  • .end()// The next position of the last element
  • .size()// Elements in the container , Unsigned integer
  • .swap(b)// In exchange for
  • ::iterator// iterator
  • .empty()// Determine whether it is null
  • .front()// Returns the first element
  • .back()// Return to the last element

iterator

Function similar to pointer , Used to access containers ( The data structure used to hold elements ) The elements in , I'm a little confused myself , It's like a pointer , It can traverse all the elements in the structure you use , You won't miss one , When using, just consider the previous , Next, add the use of delete operation ,! You can click the explanation link , After reading it, I can basically understand .

Iterator based vector Code for :

for(vector<int>::iterator it=a.begin();it!=a.end();it++)
    cout<<*it<<endl;//a Indicates the container name used ,it Represents a variable that can be changed 

Explain 1

With list( list ) Introduce the template in detail

Definition :list It's a two-way list , You can insert and delete... In constant time , I won't support it Array representation and random access . Use list when , Need to introduce header file #include<list>.

ps: In the process of writing header file , You can use #include<bits/stdc++.h> The way to be lazy . This header file contains all other header files .

list The included special member functions include

  • merge(b)// Merge two sequential tables ,b Set to empty
  • remove(b)// Delete b All of the nodes
  • splice(pos,b)// stay pos Position insert b
  • reverse()// Invert the content
  • sort()// Sort
  • unique()// Compress the same elements consecutively into one
  • push_front(x)/push_back(x)// Insert from the head or tail of the chain
  • pop_front()/pop_back()// Remove from the head or tail of the chain
  • front()/back()// Return the element of the head or tail
  • insert(p,t)// stay p Insert before t
  • erase(p)// erase p
  • clear()// Empty the list

1: First, we create a list through the iterator , The code is as follows :

#include <iostream>
#include <list>
#include <iterator>
//#include <algorithm>
using namespace std;
void print(list<int> &a) {
    for(list<int>::iterator is=a.begin(); is != a.end(); is++)
        cout<<" "<<*is;
}
int main () {
    list<int>first(3,6);// The list is initialized to 3 individual 6
    print(first);
    return 0;
}


design sketch

1:merge(b)// Merge two sequential tables ,b Set to empty :

    list<int>q(2,8);
    first.merge(q);// At this time q Set to blank , take q Content in connects to first among 
    print(first);

design sketch :

2: remove(b)// Delete b All of the nodes :

first.remove(6);// Specify to delete all in the linked list 6 The number of 

design sketch :

The following operations are not attached to the picture effect for self-test !!!

3:splice(pos,b)// stay pos Position insert b,b The content of can be a single number , It can also be the content of the whole list .

first.splice(first.begin,a);// stay first Insert at the beginning of the list a list 

4:reverse()// Invert the content

 reverse (first.begin(),first.end());

5:sort(begin At first , end End , compare greater<int>( type ))

// Sort

first.sort();// Default ascending order 
sort(first,fisrt+3,bool);//bool It is a descending function 
bool com(int x,int y)
{ return x>y; }

6:unique()// Compress the same elements consecutively into one

first.unique();

7:push_front(x)/push_back(x)// Insert from the head or tail of the chain

push_front(i);//i Insert content for 
push_back(i);

8:pop_front()/pop_back()// Go from the head or tail of the chain

first.pop_front();
first.pop_back();

9:front()/back()// Return the element of the head or tail

cout<<first.front()<<endl;
cout<<first.back()<<endl;

10:insert(p,t)// stay p Insert before t

int p[5]={55,66,77,88,99};
first.insert (position:first.begin(),first:p,begin:p+3);// stay first Beginning , Insert p Array index from 0 To 2 The elements of 
print(first);

11:erase(p)// erase p

For the list erase The operation is really troublesome , Use it here string A simple introduction to the use of strings

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string str = "wangjianwen";
    cout<<str.erase(0,1)<<endl;// The first parameter is position , The second is length , The running result is angjianwen
}

12:clear()// Empty the list , A simple .

first.clear();

about STL For containers, their function functions are similar , You can study by yourself , Only after you have typed the code can you remember it more firmly , This is the end of this section .

原网站

版权声明
本文为[zjsru_ Beginner]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207072017013156.html