基本线性表C++ STL容器操作(vector,stack,queue)

1.vector

  • 最基础的线性表容器,本质即为数组

  • 定义方法1:vector<type> vector_name

  • 创建一个type类型的容器(空)

  • 定义方法2:vector<type> vector_name(number)

  • 创建一个type类型的容器(已有number个成员,但还没有初始化)

  • 定义方法3:vector<type> vector_name(number,val)

  • 创建一个type类型的容器(已有number个值为val的成员)

  • 定义方法4:vector<type> vector_name(other_vector_name)

  • 创建一个与括号内的容器一样的容器(复制)


  • 插入方法1:push_back()
  • 向数组的最后插入一个数,即添加一个数在数组结尾
  • 如原数组
    a[0]a[1]a[2]
    123
  • 执行a.push_back(4)后,数组变为

    a[0]a[1]a[2]a[3]
    1234
  •  插入方法2:insert()
  • 向数组的特定位置插入一个或多个数
  • vector_name.insert(where,number,val)
  • 在容器的where位置前面插入number个val
  • 或vector_name.insert(where,val)
  • 在容器的where位置前面插入一个val
  • tip1:where的类型为迭代器,一般我们用【vector_name.begin() + 下标】来表示 如我们要在下vector的a[1]前插入一个4,那么a[1]的值就会被替换为4,然后原本的a[1]与后面的值均会向后移1位.
    a[0]a[1]a[2]
    123
    代码:
    a.insert(a.begin() + 1,4);

    变为:

    a[0]a[1]a[2]a[3]
    1423
  •  tip2:insert也可以实现尾插,例如向vector_name的尾添加一个值val
vector_name(vector.end(),val);

  • 删除方法1:pop_back()
  • 尾删,与push_back相反
  • 删除方法2:erase()
  • 删除指定位置或指定范围
  • vector_name.erase(where)
  • 删除where位置的元素
  • vector_name.erase(begin_begin,end_where)
  • 删除begin_begin到end_where - 1的元素
  • tip1:这里的where,begin_where,end_where也都是迭代器,一般用【vector_name.begin() + 下标】来表示
  • tip2:删除范围是没有包括end_where的,比如
    a[0]a[1]a[2]a[3]a[4]
    01234

    执行:

    a.erase(a.begin() + 1,a.begin() + 4);

    变成:

    a[0]a[1]
    04

    可见原本在a.begin() + 4的a[4]的值4并没有被删除

  • 删除方法3:clear()

  • 显而易见,vector_name.claer();便是将容器vector_name清空.


  • 遍历方法:有下标法和迭代器法,但是本人基本不用迭代器法所以没写,有兴趣的可以自己了解
  • 下标法:由于我们可以直接用vector_name[下标]来直接访问这个下标对应的元素值,所以只要直到容器中有多少个元素就可以遍历整个容器了,而函数vector_name.size()便可以告诉我们这个容器内有多少个元素.
    for(int i = 0;i < vector_name.size();i++)

  • 访问方法1:下标法
  • 把这个容器当作数组
  • 访问方法2:函数法
  • vector_name.back()访问最后一个元素
  • vector_name.front()访问第一个元素
  • tip:在使用函数法前一定要用empty()函数来检查容器是否为空,如果为空再访问就会报错

2.stack

  • 栈,遵循先入后出的原则
  • 定义:
    stack<type> stack_name;
  • 常用操作

  • 放入栈顶

    stack_name.push(val);

  • 访问栈顶元素
    stack_name.top()

  • 删除栈顶元素

    stack_name.pop();
  •  检查是否为空
    stack_name.empty()
  • 返回元素数量
    stack_name.size()

3.queue

  • 队列,遵循先入先出的原则
  • 定义:
    queue<type> queue_name;
  • 插入元素在队列最后
    queue_name.push(val);
  • 访问队列第一个元素
    queue_name.front()
  •  删除第一个元素
    queue_name.pop();
  • 检查是否为空
    queue_name.empty()
  • 返回元素数量: 
    queue_name.size()

结束

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值