一文囊括基本STL常用容器函数

//让我来学习一波STL,以后绝对可以用到的
#include<bits/stdc++.h>
#include<iostream>
#include<stack>
#include<queue>
#include<vector>
using namespace std;
int main(int argc, char const *argv[]) {
  //栈的容器用法
  stack<int>stack1;
  stack1.push(5);
  stack1.push(6);
  while(!stack1.empty()){
    cout<<stack1.top()<<" ";
    stack1.pop();
  }
  cout<<endl;
  cout<<"------------------stack1"<<endl;
  //STL中的vector
  vector<int>c;
  vector<int>c1;
  c.assign(3,2);//将3个2赋值给c
  c1.assign(1,3);//从1-3选一个数字给c1
  c.push_back(4);//将4放入c中(尾插)
  c.push_back(5);//将5放入c中
  c1.push_back(4);
  c1.push_back(5);
  //返回两个容器中的元素个数
  cout<<c.size()<<endl;
  cout<<c1.size()<<endl;
  c.pop_back();//尾部删除元素
  cout<<c.size()<<endl;
  c.insert(c.end(),2);
  cout<<c.size()<<endl;
  c.erase(c.end()-1);
  cout<<c.size()<<endl;
  //判断两个容器中元素是否相等
  if(c==c1){
    cout<<1<<endl;
  }
  else
  cout<<0<<endl;
  cout<<"------------------vector"<<endl;
  //队列的使用方法
  queue<int>queue1;
  queue1.push(1);//1进入队列
  queue1.push(2);//2进入队列
  queue1.push(3);//3进入队列
  cout<<queue1.front()<<endl;//获得队头元素
  cout<<queue1.back()<<endl;//获得队尾元素
  cout<<queue1.size()<<endl;//获得队列元素的个数
  cout<<"------------queue"<<endl;
  //优先队列的使用方法
priority_queue<int>q;
//优先队列会进行排序,默认从大到小排序
int x;
for(int i=0;i<6;i++){
  cin>>x;//需要输入六个数例:1 2 5 4 6 3
  q.push(x);
}
while(!q.empty()){
  cout<<q.top()<<" ";
  q.pop();
}
//其他用法与队列类似
cout<<endl;
cout<<"---------------priority_queue"<<endl;
//set容器是一个红黑树具有两个特点
//1,set中的函数都是排好序的
//2,set中没有重复的元素
//begin()返回的是第一个元素的地址
//end()返回最后一个元素的地址
//set中还可以是结构体,则定义时类型是结构体的标签
//需要从大到小排列时在定义时加入greater<int>就可以实现
set<int>s;
s.insert(3);
s.insert(2);
s.insert(1);
s.insert(3);
set<int>::iterator it;
for(it=s.begin();it!=s.end();it++){
  //使用迭代器进行遍历
  cout<<*it<<" ";
}
cout<<endl;
cout<<"---------------set"<<endl;
//链表的使用
// assign() 给list赋值
// back() 返回最后一个元素
// begin() 返回指向第一个元素的迭代器
// clear() 删除所有元素
// empty() 如果list是空的则返回true
// end() 返回末尾的迭代器
// erase() 删除一个元素
// front() 返回第一个元素
// get_allocator() 返回list的配置器
// insert() 插入一个元素到list中
// max_size() 返回list能容纳的最大元素数量
// merge() 合并两个list
// pop_back() 删除最后一个元素
// pop_front() 删除第一个元素
// push_back() 在list的末尾添加一个元素
// push_front() 在list的头部添加一个元素
// rbegin() 返回指向第一个元素的逆向迭代器
// remove() 从list删除元素
// remove_if() 按指定条件删除元素
// rend() 指向list末尾的逆向迭代器
// resize() 改变list的大小
// reverse() 把list的元素倒转
// size() 返回list中的元素个数
// sort() 给list排序
// splice() 合并两个list
// swap() 交换两个list
// unique() 删除list中重复的元素
list<int>listone;
list<int>::iterator i;
//在容器前面增加数据
listone.push_front(2);
listone.push_front(1);
//在容器后面增加数据
listone.push_back(3);
listone.push_back(4);
//从前向后显示数据
for(i=listone.begin();i!=listone.end();i++){
  cout<<*i<<" ";
}
cout<<endl;
//从后向前显示数据
list<int>::reverse_iterator ir;
for(ir=listone.rbegin();ir!=listone.rend();ir++){
  cout<<*ir<<" ";
}
cout<<endl;
//计算加法
int result=accumulate(listone.begin(),listone.end(),0);
cout<<"Sum="<<result<<endl;
cout<<"------------------list"<<endl;
//学习map容器函数
// begin() 返回指向map头部的迭代器
//     clear() 删除所有元素
//     count() 返回指定元素出现的次数
//     empty() 如果map为空则返回true
//     end()   返回指向map末尾的迭代器
// 
//     equal_range()    返回特殊条目的迭代器对
// 
//     erase() 删除一个元素
//     find()  查找一个元素
//     insert()插入元素
//     max_size()返回可以容纳的最大元素个数
//     size()  返回map中元素的个数
//     swap()  交换两个map
// 
//       get_allocator()  返回map的配置器
//       key_comp()       返回比较元素key的函数
//       lower_bound()    返回键值>=给定元素的第一个位置
//       max_size()       返回可以容纳的最大元素个数
//       rbegin()         返回一个指向map尾部的逆向迭代器
//       rend()           返回一个指向map头部的逆向迭代器
//       upper_bound()     返回键值>给定元素的第一个位置
//       value_comp()      返回比较元素value的函数

 

  return 0;
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值