序列容器和容器适配器
目录
- 序列容器
- 常用函数接口 array,deque,vector。
- List和foward_list
- 数组
- Vector
- emplace_back()和push_back()
- emplace()和insert()
- clear()
- pop_back()
- shrink_to_fit()
- erase()
- 栈stack
- 常用接口
- 队列
- stack和queue元素访问方式
- 优先队列
序列容器
| array |
vector |
List |
|---|---|---|
| deque |
foward_list |
常用函数接口 array,deque,vector。
| 函数成员 | 函数功能 | array |
vector |
deque |
||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| begin() | 返回指向容器中第一个元素的迭代器。 | 是 | 是 | 是 | ||||||||||||||||
| end() | 返回指向容器最后一个元素所在位置后一个位置的迭代器,通常和 begin() 结合使用。 | 是 | 是 | 是 | ||||||||||||||||
| operator=() | 复制同类型容器的元素,或者用初始化列表替换现有内容。 | 是 | 是 | 是 | ||||||||||||||||
| size() | 返回实际元素个数。 | 是 | 是 | 是 | ||||||||||||||||
| capacity() | 返回当前容量。 | - | 是 | - | ||||||||||||||||
| empty() | 判断容器中是否有元素,若无元素,则返回 true;反之,返回 false。 | 是 | 是 | 是 | ||||||||||||||||
| front() | 返回第一个元素的引用。 | 是 | 是 | 是 | ||||||||||||||||
| back() | 返回最后一个元素的引用。 | 是 | 是 | 是 | ||||||||||||||||
| operatorhttps://blog.csdn.net/xiaolewennofollow/article/details/52559364
举例:
emplace()和insert()区别同上一对的关系,emplace()是c11引入的新特性。
insert还有很多种用法。 删除元素 clear()删除所有元素,并初始化空间为0 删除元素只会改变size不会改变capacity
pop_back()删除末尾元素 删除元素只会改变size不会改变capacity
如果不考虑顺序,如下步骤可以删除指定位置的元素
模板函数 swap(),它在头文件 algorithm 和 utility 中都有定义。这个函数将第二个元素和最后一个元素互相交换,区分vector成员函数swap是交换两个人相同类型容器。 shrink_to_fit()去掉容器中多余的容量 删除元素不仅改变size,还会改变capacity
erase()1 删除指定位置的元素 只改变size,不改变capability;
2 删除指定范围的元素 左闭右开
返回值iter,如果删除最后一个元素,iter== std::end(data) ,否则指向删除元素之后的下一个位置
删除2和3,之后
栈stack创建和初始化
常用接口
队列创建和初始化:和栈是一样的
常用接口
stack和queue元素访问方式stack和queque没有迭代器,只能通过遍历容器,访问一个,弹出一个
优先队列priority_queue 容器适配器定义了一个元素有序排列的队列。默认队列头部的元素优先级最高 priority_queue 模板有 3 个参数,其中两个有默认的参数;第一个参数是存储对象的类型,第二个参数是存储元素的底层容器,默认是vector,第三个参数是函数对象,它定义了一个用来决定元素顺序的断言,默认是less,即最大元素排在前面,因此模板类型是:
当然: greater 实例如下:
常用接口
|