容器库(3)-std::deque

std::deque是有索引的序列容器,它允许在它的首尾两端快速插入及删除元素,和vector不同的是,deque底层的内存不是连续的。

本文章的代码库:

https://gitee.com/gamestorm577/CppStd

成员函数

构造、赋值和析构

构造函数

可以用元素或者另一个deque来构造deque。代码示例:

std::vector<float> vec(10, 5.f);

std::deque<float> d1;
std::deque<float> d2(3, 5.5f);
std::deque<float> d3(vec.begin() + 1, vec.begin() + 5);
std::deque<float> d4(d3);
std::deque<float> tmp(d2);
std::deque<float> d5(std::move(tmp));
std::deque<float> d6{1.f, 2.f, 3.f, 4.f, 5.f};

std::cout << "d1 size = " << d1.size() << std::endl;
std::cout << "d2 size = " << d2.size() << std::endl;
std::cout << "d3 size = " << d3.size() << std::endl;
std::cout << "d4 size = " << d4.size() << std::endl;
std::cout << "d5 size = " << d5.size() << std::endl;
std::cout << "d6 size = " << d6.size() << std::endl;

输出结果:

d1 size = 0
d2 size = 3
d3 size = 4
d4 size = 4
d5 size = 3
d6 size = 5

析构函数

销毁deque时,会从左到右依次调用元素的析构函数。代码示例:

struct MyStruct
{
    ~MyStruct()
    {
        std::cout << "~MyStruct Index = " << Index << std::endl;
    }
    
    int Index = 0;
};

std::deque<MyStruct> d(3);
d[0].Index = 0;
d[1].Index = 1;
d[2].Index = 2;

输出结果:

~MyStruct Index = 0
~MyStruct Index = 1
~MyStruct Index = 2

赋值函数

可以给另一个deque或者元素列表给deque赋值。代码示例:

std::deque<float> tmp(10, 5.5f);
std::deque<float> d1;
std::deque<float> d2;
std::deque<float> d3;

d1 = tmp;
d2 = std::move(tmp);
d3 = {1.f, 2.f, 3.f};
std::cout << "d1 size = " << d1.size() << std::endl;
std::cout << "d2 size = " << d2.size() << std::endl;
std::cout << "d3 size = " << d3.size() << std::endl;

输出结果:

d1 size = 10
d2 size = 10
d3 size = 3

assign

将值赋值给deque,参数可以是元素、迭代器或者元素列表。代码示例:

std::deque<float> tmp(10, 5.5f);
std::deque<float> d;

d.assign(5, 4.f);
std::cout << "d size = " << d.size() << std::endl;
d.assign(tmp.b
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lucy_stone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值