📅  最后修改于: 2023-12-03 14:59:47.138000             🧑  作者: Mango
C++ STL中双端队列(deque)是一种容器,可以在队列的两端进行插入和删除操作。在STL中,deque类提供了Assign()函数,使程序员可以更方便地将元素分配给双端队列。
deque的Assign()函数有两种重载形式:
void assign(size_type n, const value_type& val); //分配新值
template <class InputIterator>
void assign(InputIterator first, InputIterator last); //区间分配新值
第一种形式接受一个整数值n和一个元素值val,将n个val分配给deque:
deque<int> mydeque;
mydeque.assign(5, 10); //{10, 10, 10, 10, 10}
第二种形式接受两个迭代器参数[first,last),将[first,last)区间中的元素分配给deque:
deque<int> mydeque;
vector<int> myvector = {1, 2, 3, 4, 5};
mydeque.assign(myvector.begin(), myvector.end()); //{1, 2, 3, 4, 5}
为了更好的理解Assign()函数的使用,我们来看一个简单的示例。
#include <iostream>
#include <deque>
using namespace std;
int main()
{
deque<int> mydeque;
mydeque.push_front(1); //插入元素1
mydeque.push_front(2); //插入元素2
mydeque.push_back(3); //插入元素3
mydeque.push_back(4); //插入元素4
cout << "mydeque contains:";
for (auto it = mydeque.begin(); it != mydeque.end(); ++it)
cout << ' ' << *it; //输出 mydeque中4个元素
mydeque.assign(3, 5); //将3个值为5的元素分配给deque
cout << endl << "mydeque contains:";
for (auto it = mydeque.begin(); it != mydeque.end(); ++it)
cout << ' ' << *it; //输出 mydeque中3个元素(均为5)
return 0;
}
运行结果:
mydeque contains: 2 1 3 4
mydeque contains: 5 5 5
通过上面的介绍,我们可以看到Assign()函数的作用和用法。值得一提的是,deque容器支持许多常用操作,如在队列两端进行插入删除以及随机访问等,可以根据具体需要,选择合适的操作函数。