C++ STL中 deque::emplace_front() 和 deque::emplace_back()的使用
Deque 或双端队列是一种序列容器,具有两端的扩展和收缩特性。它们类似于向量,但在插入和删除元素时更高效,特别是在末尾和开头。和向量不同,可能无法保证连续的存储分配。
deque::emplace_front()
此函数用于将新元素插入到 deque 容器中,新元素添加到 deque 开头。
语法:
dequename.emplace_front(value)
参数 :
要插入到 deque 中的元素作为参数传递。
结果 :
参数被添加到deque 开头。
示例:
错误和异常 1. 它具有强异常保证,因此如果抛出异常,则不会进行任何更改。 2. 参数应该与容器的类型相同,否则将抛出错误。
输出:
输出:
时间复杂度 : O(1) 应用 给一个空的 deque,使用 emplace_front() 函数添加整数,然后计算它的大小而不使用 size() 函数。
算法 1. 使用 emplace_front() 函数将元素添加到 deque 中 2. 检查 deque 是否为空,如果不是,将初始化为 0 的计数器变量递增,并弹出后一个元素。 3. 重复此步骤,直到 deque 变为空。 4. 打印变量的最终值。
输出:
deque::emplace_back()
该函数用于将新元素插入到deque容器中,新元素添加到deque的末尾。
语法:
dequename.emplace_back(value)
参数:
要插入到deque中的元素作为参数传递。
结果:
参数添加到deque的末尾。
示例:
错误和异常
1.具有强异常保证,因此,如果抛出异常,则不会进行任何更改。2.参数应与容器的类型相同,否则会引发错误。
输出:
输出:
时间复杂度:
O(1)
应用
给定空的deque,使用emplace_front()函数添加整数,然后计算元素的总和。
算法
- 使用empace_back()函数将元素添加到deque
- 检查deque是否为空,如果不为空,则将back值添加到初始化为0的sum变量中,并弹出back元素。
- 重复此步骤,直到deque变为空。
- 打印变量的最终值。
输出:
时间复杂度: O(n),//n为deque中的元素数。
辅助空间: O(n)。
让我们以表格形式看看它们的差异-:
ID | deque::emplace_front() | deque::emplace_back() |
---|---|---|
1. | 它用于在deque的开头插入新元素 | 它用于在deque的结尾插入新元素 |
2. | 它的语法是-:emplace_front(Args&&… args); | 它的语法是-:emplace_back(Args&&… args); |
3. | 它没有任何返回值。 | 它没有任何返回值。 |
4. | 它的复杂度是常数。 | 它的复杂度是常数。 |
5. | 它在头文件<deque> 中存在 |
它在头文件<deque> 中存在 |