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

2669

被折叠的 条评论
为什么被折叠?



