STL学习笔记(持续更新)

vector

其实向量vector这个容器很容易使用,它的接口也很容易理解,使用之前需要引用头文件<vector>即可,在此不想赘述。c++的官方文档介绍的也非常详细点击打开链接。在此只结合文档和网上一些博客自己总结下常用的接口和注意事项。

常用接口

begin() 返回第一个元素的迭代器 

end() 返回最后一个元素的下一个元素的迭代器(注:是最后一个的下一个) 

capacity() 返回vector所能容纳的元素数量

size() 返回Vector实际元素数量的大小 

clear() 清空所有元素 

empty() 判断Vector是否为空(返回true时为空) 

erase() 删除指定元素 (时间复杂度为O(n),后面数据前移)

insert() 插入元素到Vector中 

push_back() 在Vector最后添加一个元素 

pop_back() 移除最后一个元素 

reserve() 设置Vector最小的元素容纳数量 

front() 返回第一个元素 

back() 返回最末一个元素 

at() 返回指定位置的元素 

注意事项

迭代器iterator,类似于指针,在此的定义方式为 vector <int >::iterator it; 用*it可以访问其元素,在遍历向量的时候可以使用迭代器,有效地避免越界访问的问题。例如:for(vector<int>::iterator it = a.begin();it != a.end();it++)cout<<*it<<endl;

构造函数的问题:

vector <type > name();(最常用)
vector<type >name( size_type num, const TYPE &val );
vector<type >name( const vector &from );
vector<type >name( input_iterator start, input_iterator end );

Stack


Stack就是数据结构里经典的栈模型,废话不多说,它的接口函数既简单又少,就一一列出介绍,不做详细代码演示了!
必须头文件#include<stack>
默认构造函数,创建一个空的 stack 对象。例如:stack<int>  s;
元素入栈  s.push() 
出栈 s.pop()
获取栈顶元素  s.top();
判断栈是否为空s.empty(); //空则返回true
返回栈的高度 s.size()

queue

引用头文件#include<queue>
入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()

priority_queue


优先级队列复杂一点,由于涉及到优先级,所以通常我们会想到用结构体(也就是类)例如
struct a
{
int value;
int priority;
};
但是这样a这个自定义类型是无法套用到优先级队列的,编译时候会报错,这是为什么呢?根据《C++标准程序库》中说明必须满足assignable、copyable、comparable三个条件的自定义类型才能套用到模版T中。assignable、copyable前者是可以赋值,后者是可以拷贝,这两点结构体a都满足,但是comparable代表这个自定义类型要能够进行比较,显然结构体a不具备这个条件,所以我们就需要添加一个对运算符<的重载
struct node
{
    friend bool operator< (node n1, node n2)
    {
        return n1.priority < n2.priority;
    }
    int priority;
    int value;
}; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值