📜  C++ STL中的双端队列Assign()函数(1)

📅  最后修改于: 2023-12-03 14:59:47.138000             🧑  作者: Mango

C++ STL双端队列的Assign()函数

C++ STL中双端队列(deque)是一种容器,可以在队列的两端进行插入和删除操作。在STL中,deque类提供了Assign()函数,使程序员可以更方便地将元素分配给双端队列。

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()函数使用示例

为了更好的理解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容器支持许多常用操作,如在队列两端进行插入删除以及随机访问等,可以根据具体需要,选择合适的操作函数。