在C++中deque::assign和deque::at之间的区别
双端队列(Deque)是带有两端扩展和收缩功能的序列容器。他们类似于向量,但在末尾和开头插入和删除元素方面更加高效。与向量不同,连续的存储分配可能无法保证。在这里我们将看到C++中deque::assign和deque::at之间的区别。
deque::assign
deque::assign用于通过替换其当前内容来分配新内容给双端队列容器。它相应地修改了大小。
语法:
dequename.assign(<int> size, <int> val)
参数:
1. size: 它指定要分配到容器中的值的数量。
2. val: 它指定要分配到容器中的值。
在该容器中,所有迭代器、指针和引用都无效。使用deque::assign的头文件是
下面是实现deque::assign的C++程序:
输出
- 时间复杂度: O(N)。
- 空间复杂度: O(N)。
deque::at
deque::at用于返回双端队列容器对象中位置为 x 的元素的引用。deque::at会自动检查 x 是否在容器的有效元素范围内。
语法:
at(size_type n);
参数:
要获取的元素的位置。
返回值: 在给定位置的元素的直接引用。
在该容器中,所有迭代器都是有效的。使用deque::at的头文件是
异常:
- 如果抛出异常,则容器没有更改。
- 如果n超出范围,则会抛出out_of_range。
下面是实现deque::at的C++程序:
输出
- 时间复杂度: O(1)
- 空间复杂度: O(1)
deque::assign vs deque::at
下面是deque::assign和deque::at之间的区别:
基础 | deque::assign | deque::at |
---|---|---|
定义 | 用于将新内容分配给deque容器,替换其当前内容。 | 用于返回deque容器对象中位置n上的元素的引用。 |
语法 | dequename.assign( |
引用 at (size_type n); |
参数数量 | 它需要两个参数。 | 它只需要一个参数。 |
返回值 | 它没有任何返回类型。 | 返回给定位置的元素的直接引用。 |
复杂度 | 它的复杂度是线性的。 | 它的复杂度是常量的。 |