C++ STL学习-常用的容器和方法大全

目录

1,常见的容器使用

Vector

Bit_vector

Stack

Queue

Priority_queue

Deque

stirng

Slist

List

set

multiset

hash_set

map

multimap

hash_map

2,常见的方法使用

Sort()

Trim()

itoa

atoi


1,常见的容器使用

容器名称

特点

构造方法

常用的方法

Vector

Vector是一个简单的高效的容器,线性结构,是数组的一个推广,支持像数组一样随机访问,可以在尾端插入和删除元素,vector具有动态的内存管理功能。(vector含有m_start,m_finsh,m_end_of_storage分别用来表示存放向量的起始位置,当前最后一个向量元素的的末尾字节和整个容器所占内存的末尾字节)

  • ,vector(const A &a=A()),example:vector <int> v;
  • ,vector(size_type n),example:vector<int> v(10)-创建含有十个元素的vector对象,默认值为0.
  • ,vector(size_type,const T& value),example:vector<int> v(10,1)-创建一个含有十个元素值为1的vector对象。

 

  • ,vector(const vector&),exaple:vector<int>v1(10,1);Vector<int> v2(v1);
  • ,vector(const inputIterator first,const InputIterator last,const A&a=A()),example:int iarray[]={1,2,3};vector<int> v(iarray,iarray+2);

 

  • Void push_back(const T& value);//尾端插入。
  • Iterator end();返回指向最后一个元素的下一个元素的位置。
  • Reference operator [],数组下标访问。
  • Iterator begin(),返回第一个元素的位置。
  • Iterator insert(iterator pos,const T&x),在pos位置上插入X,相比push_back耗时。
  • Iterator erase(iterator pos),iterator earse(iterator first,iterator last),删除指定位置元素
  • Void clear()删除全部元素。

Bit_vector

位向量容器,bit_vector容器是一个bit位元素的序列容器。一个元素只占一位。

  • Bit_vector()
  • Bit_vector(size_type n)
  • Bit_vector(size_type n,bool value)
  • Bit_vector(const slist&)
  • Bit_vector(inputiterator first,inputiterator last
  • Iterator end();返回指向最后一个元素的下一个元素的位置。
  • Iterator begin()返回第一个元素的位置。
  • Reference operator [],数组下标访问。
  • Iterator insert(iterator pos,bool x),在pos位置上插入X,相比push_back耗时。
  • void Pop_back();// 删除最后一个元素
  • Iterator erase(iterator pos),iterator earse(iterator first,iterator last),删除指定位置元素
  • Void clear()删除全部元素。
  • reverse_iterator rbegin();
  • reverse_iterator rend();
  • void swap(bit_vector &);
  • void swap(Bit_reference x,Bit_reference y);
  • bool emoty();
  • size_type size();
  • size_type capacity();

Stack

栈是一个线性表,只支持在一端进行插入与删除,栈是先进后出。

  • Stack()
  • Stack(const stack&)
  • Void push();//入栈
  • Void pop();//出栈
  • Value_type& top();//取栈顶元素
  • Bool empty();//判断栈空
  • Size_type size();//返回栈中元素个数

Queue

队列是一种线性存储表,元素数据只能在一端插入,在另一端删除。队列是先进先出的特点。

  • queue();
  • queue(const queue&);
  • Void push(const value_type &x);//元素入队。
  • Void pop();//元素出队。
  • Value_type& front();//取出队首元素。
  • Value_type& back();//取出队尾元素。
  • Bool empty();//判断队列是否为空。
  • Size_type size();//返回队列当前元素个数。

Priority_queue

优先队列具有队列所有大的特征,包括基本操作,只是增加了一个内部排序的功能。队列中最值元素总是位于队首位置,出队总是出最值元素。(联想到堆)

  • Priority_queue();
  • Priority_queue(const priority_queue&);
  • priority_queue<Type, Container, Functional>
  • 小根堆priority_queue<int,vector<int>,less<int>>b;
  • Void push(const value_type&)
  • Void pop();
  • Bool empty();
  • Const value_type& Top();//返回队首元素
  • Size_type size();

Deque

双端队列容器,可在头部和尾部进行0(1)的插入语删除

  • Deque()
  • Deque(size_type n)
  • Depue(size_type n,const T& value)
  • Deque(const deque&)
  • Deque(const inputiterator first,const inputiterator last,const A& a=A())
  • Void push_back(const T&);尾部//插入
  • Void push_front(const T&);//头部插入
  • Iterator begin();
  • Iterator end();
  • Iterator insert(iterator pos,const T& x);//pos位置之前插入x
  • Void pop_front();//删除头部元素
  • Void pop_back();//删除尾部元素
  • Iterator earse(iterator pos);//删除pos位置元素
  • Iterator earse(iterator first,iterator last);//删除区间[first,last)的元素
  • Void clear();//删除所有元素
  • Reverse_iterator rbegin();reverse_iterator_iterator rend();// 反向遍历
  • Void swap(deque &);//交换两队列
  • Bool empty();
  • Size_type size();
  • Reference front();//返回头部元素
  • Reference back();//返回尾部元素

stirng

string是一个基于字符的序列容器,具有vector向量一样的内部线性结构,最后以null结尾。

  • String();
  • String(const string& s,size_type pos=0,size_type n=npos)
  • String(const char*)
  • Void push_back(char c);//尾部添加
  • String& append(const char* s);//将string字符串尾部添加字符串
  • String& append(const string& s)
  • Iterator insert(iterator pos,const char& c);
  • Iterator begin();iterator end();
  • Reverse_iterator rbegin();reverse_iterator rend();//逆向遍历
  • Iterator earse(iterator pos);iterator earse(iterator first,iterator last);
  • String& earse(size_type pos=0,size_type n=npos);//删除字符串从索引位置pos开始的n个字符
  • Void clear();//删除
  • String& replace(size_type pos,size_type n,const char * s);//从索引位置n开始后n个字符替换为s
  • String& replace(size_type pos,size_type n,size_type n1,char c);//将从索引pos位置后n个字符替换成n1了c字符
  • String& replace(iterator first,iterator last,const char*s)
  • Size_type find(const char *s,size_type pos=0);//从pos位置查找子串位置
  • Size_type find(char c,pos=0)
  • Size_type rfind(const char*s,size_type pos=npos);//逆向查找
  • Size_type rfind(char c)
  • Size_type find_first_of(const char* s,size_type pos=0)
  • Int compare(const string& s);//比较
  • Size_type length();
  • Size_type size();
  • Bool empty();

Slist

单向列表容器-单链表

  • Slist()
  • Slist(size_type n)
  • Slist(size_type n,const T&value)
  • Slist(const slist&)
  • Slist(inputiterator first,inputiterator last)
  • Void Push_ffont(const value&)//头插
  • Iterator begin();
  • iterator end();
  • Iterator insert_after(iterator pos,const T&x)
  • Iterator insert(iterator pos,const T& x)
  • Void pop_front()
  • Iterator erase(iterator pos)
  • Iterator erase(iterator first,iterator last)
  • Void clear()
  • Void remove(const T& value);//移除所有值为value的元素
  • Void swap(slist&)
  • Void splice(iterator position,slist& x);//将x表归并到pos之前,x表删除
  • Void splice(iterator pos,slist &x,iterator i);//将x中i的位置归并到pos位置,并在x中删除i位置元素
  • Void merge(slist& x)//将对象x链表归并到当前链表中
  • Void sort();//进行排序
  • Void unique();//用于删除连续重复的元素

List

双向链表容器

  • List()
  • List(size_type n)
  • List(size_type n,const T&value)
  • List(const slist&)
  • List(inputiterator first,inputiterator last)
  • Void push_back(const &T);//将元素尾插到链表中
  • Iterator begin();
  • Iterator end();
  • Void push_front(const &T);//头插
  • Iterator insert(iterator pos,const T& x);
  • Void pop_front();
  • Void pop_back();
  • Iterator earse(iterator pos);
  • Iterator earse(iterator first,iterator lase)
  • Void clear()
  • Void remove(const T & vlaue)
  • Reverse_iterator rbegin();
  • Reverse_iterator rend();
  • Void swap(list&)
  • Void splice(iterator position,list& x);//将x表归并到pos之前,x表删除
  • Void splice(iterator pos,list&x,iterator i);//将x中i的位置归并到pos位置,并在x中删除i位置元素
  • Void merge(list& x)//将对象x链表归并到当前链表中
  • Void sort();//进行排序
  • Void unique();//用于删除连续重复的元素

set

set集合容器不允许存在重复的元素,且使用一种红黑树的的平衡二叉检索树的数据结构-故数据有序。

  • set();
  • set(const key_compare& comp);// 自定义比较函数对象的set容器,例如:struct strless{ bool operator()(const char * s1,const char * s2)const{ return strcmp(s1,s2)<0;}};,创建对象,set<const char*,strless> s(strless());
  • set(const set&)
  • set(inputiterator first,iterator last)
  • set(inputiterator first,iterator last,const key_compare& comp)
  • pair<iterator,bool> insert(const value_type& v);//不重复的插入
  • iterator insert(iterator pos,const value_type&);
  • void insert(iterator first,iterator last);
  • void erase(iterator pos);
  • size_type erase(const key_type&k);//删除k值元素
  • void erase(iterator first,iterator last);
  • void clear();
  • iterator begin();
  • iterator end();
  • reverse_iterator rbegin();
  • reverse_iterator rend();
  • iterator find(const key_type l)const;
  • bool empty();
  • size_type size();
  • iterator lower_bound(const key_type& k) const;//返回小于等于k的第一个元素的位置
  • iterator upper_bound(const key_type& k) const;//返回大于k的第一个元素的位置

multiset

多重集合容器,可以允许集合中存在重复的元素且元素有序。

  • multiset();
  • multiset(const key_compare& comp);// 自定义比较函数对象的set容器,例如:struct strless{ bool operator()(const char * s1,const char * s2)const{ return strcmp(s1,s2)<0;}};,创建对象,multiset<const char*,strless> s(strless());
  • multiset(const multiset&)
  • multiset(inputiterator first,iterator last)
  • set(inputiterator first,iterator last,const key_compare& comp)
  • iterator insert(const value_type& v);
  • iterator insert(iterator pos,const value_type&);
  • void insert(iterator first,iterator last);
  • void erase(iterator pos);
  • size_type erase(const key_type&k);//删除所有k值元素,并返回删除所有k的个数
  • void erase(iterator first,iterator last);
  • void clear();
  • iterator begin();
  • iterator end();
  • reverse_iterator rbegin();
  • reverse_iterator rend();
  • iterator find(const key_type l)const;
  • bool empty();
  • size_type size();
  • size_type count(const key_type& k)const;//统计键值等于k的元素个数
  • iterator lower_bound(const key_type& k) const;//返回小于等于k的第一个元素的位置
  • iterator upper_bound(const key_type& k) const;//返回大于k的第一个元素的位置

hash_set

哈希集合容器是一种使用哈希表数据结构的具有高效数据检索的关联容器。hash_set的元素在内部的数据结构并不是呈现次序的关系的,并且要求数据数据存在且唯一。

  • hash_set()
  • hash_set(size_type n)
  • hash_set(size_type n,const hasher& h);//hasher为哈希函数
  • hash_set(size_type n,const hasher& h,const key_equal& k);//key_equal为键值比较函数
  • hash_set(const hash_set&)
  • pair<iterator,bool> insert(const value_type& v)
  • void insert(iterator first,iterator last)
  • iterator begin()
  • iterator end()
  • void erase(iterator pos)
  • size_type erase(const key_type& k);//删除值为k的所有元素并返回删除个数
  • void erase(iterator first,iterator last)
  • void clear()
  • iterator find(const key_type& k);//进行元素的查找,若是找不到则返回末尾end()
  • bool empty()
  • size_type size()
  • size_type bucket_count() const;//返回哈希表的表长

map

map映照容器,键值和数据之间可以存在映照关系,插入的元素键值不允许重复,且使用一种红黑树的的平衡二叉检索树的数据结构-故数据有序。

  • map();// map<char,int,great<char>> m;
  • map(const key_compare& comp);//comp为自定义的比较函数对象
  • map(const map&)
  • map(inputiterator first,iputiterator last)
  • map(inputiterator first,iputiterator last,const key_compare& comp)
  • 注意insert的插入格式
  • pair<iterator,bool> insert(const value_type& v)
  • iterator insert(iterator pos,const value_type& v)
  • void inset(inputiterator first,inputiterator last)
  • void erase(iterator pos)
  • size_type erase(const value_type& k);//删除值为k的所有元素并返回删除个数
  • void erase(iterator first,iterator last)
  • void clear()
  • iterator begin()
  • iterator end()
  • reverse_iterator rbegin()
  • reverse_iterator rend()
  • iterator find(const value_type& k);
  • bool empty()
  • size_type size();

multimap

 

多重映照容器,有序且允许重复的键值。unordered_map也有类似的无序的哈希值的功能。

  • multimap();// map<char,int,great<char>> m;
  • multimap(const key_compare& comp);//comp为自定义的比较函数对象
  • multimap(const multimap&)
  • multimap(inputiterator first,iputiterator last)
  • multimap(inputiterator first,iputiterator last,const key_compare& comp)
  • pair<iterator,bool> insert(const value_type& v)
  • iterator insert(iterator pos,const value_type& v)
  • void inset(inputiterator first,inputiterator last)
  • void erase(iterator pos)
  • size_type erase(const value_type& k);//删除值为k的所有元素并返回删除个数
  • void erase(iterator first,iterator last)
  • void clear()
  • iterator begin()
  • iterator end()
  • reverse_iterator rbegin()
  • reverse_iterator rend()
  • iterator find(const value_type& k);
  • bool empty()
  • size_type size();
  • size_type count(const key_type& k)const;//统计键值等于k的元素个数
  • iterator lower_bound(const key_type& k) const;//返回大于等于k的第一个元素的位置
  • iterator upper_bound(const key_type& k)

hash_map

哈希映照容器,不允许重复,使用的是哈希表的数据结构

  • hash_map()
  • hash_map(size_type n)
  • hash_map(size_type n,const hasher& h);//hasher为哈希函数
  • hash_map(size_type n,const hasher& h,const key_equal& k);//key_equal为键值比较函数
  • hash_map(const hash_map&)
  • pair<iterator,bool> insert(const value_type& v)
  • void insert(iterator first,iterator last)
  • iterator begin()
  • iterator end()
  • void erase(iterator pos)
  • size_type erase(const key_type& k);//删除值为k的所有元素并返回删除个数
  • void erase(iterator first,iterator last)
  • void clear()
  • iterator find(const key_type& k);//进行元素的查找,若是找不到则返回末尾end()
  • bool empty()
  • size_type size()
  • size_type bucket_count() const;//返回哈希表的表长

2,常见的方法使用

方法名称

特点

用法

Sort()

排序函数

Sort(起始地址,末尾地址,排序方法);

排序方法:

bool complare(int a,int b)

{

    return a>b;

}

如果是容器从大到小排序用greater<int>,如果是结构体则需要自已定义

Trim()

自定义字符串去掉所有空格

 void trim(string &s)

    {

        int index = 0;

        if( !s.empty())

        {

            while( (index = s.find(' ',index)) != string::npos)

          {

          s.erase(index,1);

            }

        }

    }

itoa

整数变成字符串数组

 功 能:把一整数转换为字符串

用 法:char *itoa(int value, char *string, int radix);

详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.

参数:

value: 待转化的整数。

radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。

* string: 保存转换后得到的字符串。

atoi

将字符串变成整数

C语言库函数名: atoi

功 能: 把字符串转换成整型数.

名字来源:array to integer 的缩写.

函数说明: atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是正负号返回零,否则开始做类型转换,之后检测到非数字或结  束符 \0 时停止转换,返回整型数。

原型: int atoi(const char *nptr);

reverse

将数组进行反置

reverse(nums.begin(),nums.end())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿联爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值