deque::assign 和 deque::back 在 C++ 中的区别
双端队列或deque是具有两端扩展和收缩功能的顺序容器。它们类似于向量,但在插入和删除元素时更高效,包括在末尾和开头。与向量不同,不一定保证连续的存储分配。
deque::assign
deque::assign用于通过替换其当前内容来分配新内容到deque容器中。它相应地修改尺寸。
语法:
dequename.assign(<int> size, <int> val)
参数:
- size: 它指定要分配到容器中的值的数量。
- val: 它指定要分配到容器中的值。
返回值: None
迭代器有效性: 在此容器中,所有迭代器、指针和引用都无效。
头文件:
<deque>
示例:
// C++程序演示deque::assign
#include <deque>
#include <iostream>
using namespace std;
// 驱动程序
int main()
{
// 声明 deque
deque<int> one = { 7, 14, 21, 28, 35 };
deque<int> two;
// 使用deque迭代器遍历
deque<int>::iterator itr = two.begin();
// 分配 deque<int>one的元素
// 给到 deque<int>two
two.assign(one.begin(), one.end());
cout << "deque<int>one的元素是:";
for (itr = one.begin(); itr != one.end(); ++itr) {
cout << *itr << " ";
}
cout << endl;
cout << "deque<int>two的元素是:";
for (itr = two.begin(); itr != two.end(); ++itr) {
cout << *itr << " ";
}
cout << endl;
return 0;
}
输出:
deque<int>one的元素是:7 14 21 28 35
deque<int>two的元素是:7 14 21 28 35
时间复杂度: O(N)
空间复杂度: O(N)
deque::back
deque::back用于返回容器中最后一个元素的引用。它返回元素的直接引用。
语法:
deque_name.back()
参数: 它不需要任何参数
返回值: Deque::back接受整数类型返回值。
迭代器有效性: 在此容器中,所有迭代器、指针和引用都无效。
头文件:
<deque>
异常: 如果容器为空,则会导致未定义行为。
示例:
// C++程序演示deque::back
#include <deque>
#include <iostream>
using namespace std;
// 驱动程序
int main()
{
// 声明 deque
deque<int> GFG = { 10, 20, 30, 40, 50, 60 };
int last_element = GFG.back();
cout << "最后一个元素是:" << last_element << endl;
return 0;
}
输出:
最后一个元素是:60
时间复杂度: O(1)
空间复杂度: O(1)
deque::assign vs deque::back
下面是deque::assign和deque::back之间的区别
基础 | deque::assign | deque::back |
---|---|---|
定义 | 它用于向deque容器分配新的内容,取代其当前内容。 | 它用于返回容器中最后一个元素的引用。 |
语法 | dequename.assign(<int> size, <int> val); |
dequename.back() |
参数数量 | 它有两个参数 | 它不需要任何参数。 |
返回值 | 它没有任何返回值。 | 它的返回值是整数类型。 |
复杂度 | 线性 | 常数 |