在 C++ STL 中的deque::emplace_front() 和 deque::emplace_back() 使用

在 C++ STL 中的deque::emplace_front() 和 deque::emplace_back() 使用

dequeSTL 中的一个容器,可用来存储各种类型的数据,它支持动态扩展,可以在队列的前端和后端进行添加、删除操作,也支持随机访问。在实际开发中,我们常常需要在队列中插入一些自定义类型的数据,而 emplace_front()emplace_back()deque 中的两个方法,可以用来高效地添加数据。

deque 类概述

在开始介绍 emplace_front()emplace_back() 方法之前,我们需要先对 deque 类进行一些了解。

deque 的格式如下:

template <class T, class Allocator = allocator<T>> class deque;

deque 是一个双向队列,可以在头部和尾部添加或删除数据。在使用 deque 容器时,需要包含头文件 #include<deque>

下面我们来看一个简单的例子,创建并使用一个 deque 对象:

#include <deque>
#include <iostream>

using namespace std;

int main() {
    deque<int> myDeque;
    for (int i = 0; i < 5; ++i) {
        myDeque.push_back(i);
    }
    cout << "myDeque size: " << myDeque.size() << endl;
    cout << "myDeque content: ";
    for (auto& d: myDeque) {
        cout << d << " ";
    }
    cout << endl;
    return 0;
}

输出结果为:

myDeque size: 5
myDeque content: 0 1 2 3 4 

在上面的代码中,我们定义了一个 deque<int> 类型的 myDeque 对象,并使用了 push_back() 方法向队尾添加了 5 个整数元素。然后我们使用 size() 方法获取 deque 中元素的个数,并使用一个 for 循环遍历了一遍 deque 中的全部元素。

emplace_front() 和 emplace_back() 方法的使用

在介绍 emplace_front()emplace_back() 方法之前,我们需要先了解 emplace 方法。

emplace 方法是一种类似于构造函数的方法,可以用来在 deque 容器中创建元素。与 push_back()push_front() 方法不同,emplace() 方法可以直接在 deque 中创建元素,而不是在其中插入已经构造完毕并存储在内存中的对象。通过使用 emplace() 方法,我们可以避免在 deque 中做不必要的拷贝或构造操作,提高程序的效率。

接下来,我们就可以使用 dequeemplace_front()emplace_back() 方法来向队列的前端和后端添加数据。

#include <deque>
#include <iostream>

using namespace std;

int main() {
    deque<int> myDeque;
    for (int i = 0; i < 5; ++i) {
        myDeque.emplace_back(i);
    }
    cout << "myDeque size: " << myDeque.size() << endl;
    cout << "myDeque content: ";
    for (auto& d: myDeque) {
        cout << d << " ";
    }
    cout << endl;
    myDeque.emplace_front(5);
    cout << "myDeque size: " << myDeque.size() << endl;
    cout << "myDeque content: ";
    for (auto& d: myDeque) {
        cout << d << " ";
    }
    cout << endl;
    return 0;
}

在上面的代码中,我们首先使用 emplace_back() 方法向队尾添加了 5 个整数元素。然后,我们使用 emplace_front() 方法向队头添加了一个整数,这样我们就在队列中添加了 6 个整数元素。最后,我们打印出了 deque 中的全部元素。

输出的结果为:

myDeque size: 5
myDeque content: 0 1 2 3 4 
myDeque size: 6                                                                                                                                                      
Deque content: 5 0 1 2 3 4 

上面代码中,我们首先使用 emplace_back() 方法添加了 5 个整数元素到 deque 容器中。接下来,我们使用 emplace_front() 方法,向队列头部添加一个整数 5。最后,我们使用 for 循环遍历了整个 deque 容器中的元素,并打印出它们的值。

总结

在本文中,我们了解了 deque 类,以及它的两个方法:emplace_front()emplace_back()。相比于 push_front()push_back()emplace_front()emplace_back() 方法能够直接在容器中创建对象,而不需要先构造临时对象再进行插入。这种方法的优劣势体现在操作次数的增减上,可以有效地提升程序的效率。在实际编程中,我们可以根据需要选择使用 emplace_front()emplace_back() 来添加数据,以达到更好的性能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程