C++ STL中的Deque::front() 和 deque::back()

C++ STL中的Deque::front() 和 deque::back()

双端队列(Deque)是一种具有两端扩展和收缩特性的序列容器。它们类似于向量,但在插入和删除元素时更有效,无论是在结尾还是开头。与向量不同的是,双端队列中可能无法保证连续的存储分配。

deque::front()

front() 用于引用 deque 容器的第一个元素。此函数可用于获取 deque 的第一个元素。这是 C++ 标准模板库(STL)中的内置函数。此函数属于 ** ** header 文件。

语法:

deque 名称.front()

返回值: 返回 deque 容器的第一个元素的直接引用。

示例:

Input : mydeque = 1, 2, 3
mydeque.front();
Output : 1

Input : mydeque = 3, 4, 1, 7, 3
mydeque.front();
Output : 3

错误和异常:

  1. 如果 deque 容器为空,则会导致未定义行为。
  2. 如果 deque 不为空,则无异常抛出保证。
// CPP program to demonstrate
// Implementation of front() function
#include <deque>
#include <iostream>
using namespace std;
 
int main()
{
    deque<int> mydeque;
    mydeque.push_back(3);
    mydeque.push_back(4);
    mydeque.push_back(1);
    mydeque.push_back(7);
    mydeque.push_back(3);
    // Queue becomes 3, 4, 1, 7, 3
 
    cout << mydeque.front();
    return 0;
}  

Output

3

Time complexity: O(1)

Auxiliary Space: O(1)

deque::back()

back() 函数用于引用 deque 容器的最后一个元素。此函数可用于从 deque 的后面获取第一个元素。这是 C++ 标准模板库(STL)中的内置函数。此函数属于 ** ** header 文件。

语法:

deque名字.back()

返回值: 返回 deque 容器的最后一个元素的直接引用。

示例:

Input  :  mydeque = 1, 2, 3
          mydeque.back();
Output :  3

Input  :  mydeque = 3, 4, 1, 7, 3
          mydeque.back();
Output :  3

错误和异常:

  1. 如果 deque 容器为空,则会导致未定义行为。
  2. 如果 deque 不为空,则无异常抛出保证。
// CPP program to demonstrate
// Implementation of back() function
#include <deque>
#include <iostream>
using namespace std;
 
int main()
{
    deque<int> mydeque;
    mydeque.push_back(3);
    mydeque.push_back(4);
    mydeque.push_back(1);
    mydeque.push_back(7);
    mydeque.push_back(3);
    // Queue becomes 3, 4, 1, 7, 3
 
    cout << mydeque.back();
    return 0;
}  

输出

3

Time complexity: O(1)

Auxiliary Space: O(1)

deque::front() 和deque::back() 的应用

给定一个空的整数 deque,向 deque 中添加数字,然后打印第一个元素和最后一个元素之间的差异。

Input  : 1, 2, 3, 4, 5, 6, 7, 8
Output : 7

(说明:最后一个元素是8,第一个元素是1,差值为7)

算法:

1. 使用 push_back() 函数向deque(双端队列)中添加数字。

2. 比较第一个元素和最后一个元素。

3. 如果第一个元素较大,则从中减去最后一个元素并打印。

4. 否则从最后一个元素中减去第一个元素并打印。

// CPP program to demonstrate
// application Of front() and back() function
# include <deque>
# include <iostream>
using namespace std;
 
// Driver Code
int main()
{
    deque<int> mydeque;
    mydeque.push_back(8);
    mydeque.push_back(7);
    mydeque.push_back(6);
    mydeque.push_back(5);
    mydeque.push_back(4);
    mydeque.push_back(3);
    mydeque.push_back(2);
    mydeque.push_back(1);
    // deque becomes 8, 7, 6, 5, 4, 3, 2, 1
 
    if (mydeque.front() > mydeque.back()) {
        cout << mydeque.front() - mydeque.back();
    }
    else if (mydeque.front() < mydeque.back()) {
        cout << mydeque.back() - mydeque.front();
    }
    else
        cout << "0";
 
    return 0;
}  

输出

7

时间复杂度: O(1)

辅助空间: O(1)

让我们以表格形式了解它们之间的差异 -:

ID Deque::front() deque::back()
1. 用于返回deque容器中的第一个元素的引用。 用于返回容器中最后一个元素的引用。
2. 语法为 -: reference front(); 语法为 -: reference back();
3. 它不接受任何参数。 它不接受任何参数。
4. 复杂度为常数。 复杂度为常数。
5. 迭代器的有效性不会改变。 迭代器的有效性不会改变。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程