在 C++ STL 中 deque::operator= 和 deque::operator[]
Deque 或双向队列是具有扩展和收缩两端功能的序列容器。它们类似于向量,但在插入和删除元素时更高效地处理末尾和开始。与向量不同,不保证连续的存储分配。
deque::operator=
此运算符用于通过替换现有内容来为容器分配新内容。
它还根据新内容修改大小。
语法:
dequename1 = (dequename2)
参数:
与此相同类型的另一个容器。
结果:
将传递的容器的内容分配给运算符左侧的容器。
示例:
错误和异常
1. 如果容器类型不同,则会抛出错误。
2. 否则,它具有基本的无异常抛出保证。
输出:
时间复杂度: O(n)
辅助空间: O(n)
deque::operator[]
此运算符用于引用运算符内部给定位置上存在的元素。它类似于 at() 函数,唯一的区别在于当位置不在 deque 的尺寸范围内时,at() 函数会抛出一个 out-of-range 异常,而此运算符会导致 未定义行为 。
语法:
dequename[position]
参数:
要获取的元素的位置。
返回值:
给定位置处的元素的直接引用。
示例:
错误和异常
1. 如果位置不存在于 deque 中,则显示未定义行为。
2. 否则,它有一个无异常抛出保证。
输出:
时间复杂度: O(1)
辅助空间: O(n)
应用
给定一个整数 deque,请打印在偶数位置出现的所有整数。
输入:1、2、3、4、5、6、7、8、9
输出:1 3 5 7 9
说明 – 1、3、5、7和9位于偶数位置0、2、4、6和8
算法
1. 运行循环直到数组大小。
2. 检查位置是否可被2整除,如果是,则打印该位置上的元素。
输出:
时间复杂度: O(n)。//n是deque的大小。
辅助空间: O(n)
我们以表格的形式来看看它们的区别:
ID | deque::operator= | deque::operator[] |
---|---|---|
1. | 它用于为容器分配新内容并替换其当前内容。 | 它用于返回deque容器中位置n的元素的引用。 |
2. | 其语法为 -:deque& operator= (const deque& x); | 其语法为 -: reference operator[] (size_type n); |
3. | 它需要两个参数,即 -: 1. 一个与原类型相同的deque对象 2. 一个初始化列表对象。 | 它只需要一个参数,即容器中元素的位置。 |
4. | 其复杂度是线性的。 | 其复杂度是常数。 |
5. | 它在<deque> 头文件中定义。 |
它的迭代器有效性不会改变。 |