61 CPP其它容器

61 CPP其它容器

array(静态数组)

1)物理结构

在栈上分配内存,创建数组的时候,数组长度必须是常量,创建后的数组大小不可变。

template

class array{

private:

T elems_[size];

……

};

2)迭代器

随机访问迭代器。

3)特点

部分场景中,比常规数组更方便(能用于模板),可以代替常规数组。

#include <iostream>
#include <array>
using namespace std;
// array容器
void test()
{
    int aa[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    array<int, 10> ab = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    // array迭代有4种方法
    for (int i = 0; i < 10; i++)
    {
        cout << ab[i] << " ";
    }
    cout << endl;

    for (int i = 0; i < ab.size(); i++)
    {
        cout << ab[i] << " ";
    }
    cout << endl;

    for (auto it = ab.begin(); it != ab.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    for (auto val : ab)
    {
        cout << val << " ";
    }
    cout << endl;
}
int main()
{
    test();
    return 0;
}

deque(双端队列)

1)物理结构

deque容器存储数据的空间是多段等长的连续空间构成,各段空间之间并不一定是连续的。

为了管理这些连续空间的分段,deque容器用一个数组存放着各分段的首地址。

通过建立数组,deque容器的分段的连续空间能实现整体连续的效果。

当deque容器在头部或尾部增加元素时,会申请一段新的连续空间,同时在数组中添加指向该空间的指针。

2)迭代器

随机访问迭代器。

3)特点

提高了在两端插入和删除元素的效率,扩展空间的时候,不需要拷贝以前的元素。

在中间插入和删除元素的效率比vector更糟糕。

随机访问的效率比vector容器略低。

4)各种操作

与vector容器相同。

forward_list(单链表)

1)物理结构

单链表。

2)迭代器

正向迭代器。

3)特点

比双链表少了一个指针,可节省一丢丢内存,减少了两次对指针的赋值操作。

如果单链表能满足业务需求,建议使用单链表而不是双链表。

4)各种操作

与list容器相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值