C++ STL 中的deque::at() 和 deque::swap()
Deque 或双向队列是具有两端扩展和收缩特性的序列容器。它们类似于向量,但在插入和删除元素时更高效,同时也更高效地在开头进行操作。与向量不同的是,不保证连续的存储空间分配。
deque::at()
at() 函数用于引用作为该函数参数给出的 位置 的元素。
语法:
dequename.at(position)
参数:要提取的元素的位置。
返回值:给定位置的元素的直接引用。
举例:
错误和异常
1. 如果双向队列中不存在该位置,则抛出 out_of_range 异常。
2. 除此之外,它具有强无异常抛出保证。
输出:
应用
给定一个整数双向队列,打印所有出现在偶数位置上的整数。
算法
1. 循环直到数组大小。
2. 检查位置是否可以被 2 整除,如果是,则打印该位置的元素。
输出:
deque::swap()
这个函数用于交换另一个相同类型和大小的双向队列的内容。
语法:
dequename1.swap(dequename2)
参数:
需要与其内容交换的双向队列的名称。
结果:两个双向队列的所有元素都被互换。
举例:
错误和异常 1.如果deque不是相同类型,则会引发错误。 2.如果deque不是相同大小,则会引发错误。 否则它具有基本的无异常抛出保证。
输出:
时间复杂度: O(n). //n是deque中元素的数量。
辅助空间: O(n)。
让我们以表格形式看到差异-:
ID | deque::at() | deque::swap() |
---|---|---|
1. | 它用于返回deque容器对象中位置n处的元素的引用。 | 它用于交换容器的内容,以及另一个包含相同类型元素的容器的内容。 |
2. | 它的语法是:-:参考at(size_type n); | 它的语法是:-:swap(deque& x); |
3. | 它只接受一个参数,即容器中元素的位置。 | 它只接受一个参数,即我们想要交换元素的队列。 |
4. | 它的复杂度是恒定的。 | 它没有任何返回值。 |
5. | 它的迭代器有效性不会改变。 | 它的复杂度是恒定的。 |