c++中deque::assign与deque::empty的区别
双端队列是一种序列容器,具有两端展开和收缩的特点。它们类似于vector,但是在末尾和开头插入和删除元素时效率更高。与向量不同,可能无法保证连续存储分配。
下面我们将看到c++中deque::assign和deque::empty的区别。
deque::assign
assign的作用是通过替换Deque容器的当前内容来为其赋值新内容。它会相应地改变它的大小。
语法:
dequename.assign(<int> size, <int> val)
参数:
- size—分配给容器的值的数量。
- val—要赋给容器的值。
头文件:
<deque>
异常:如果抛出异常,则容器处于有效状态。
迭代器有效性:在此容器中,所有的迭代器、指针和引用都无效。
示例:
// C++ program to implement deque::assign
#include <deque>
#include <iostream>
using namespace std;
int main()
{
// Declaration of Deque
deque<int> d1 = { 1, 3, 6, 0, 0 };
deque<int> d2;
// Assigning d1 deque elements
// into d2 deque
d2.assign(d1.begin(), d1.end());
cout << "Elements in d2 container are : ";
for (auto it = d2.begin(); it != d2.end(); ++it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
输出:
Elements in d2 container are : 1 3 6 0 0
- 时间复杂度- O(N)
- 空间复杂度- O(N)
deque::empty
Deque::empty用于检查Deque容器是否为空。它不会改变容器中的任何东西。
语法:
emtpy();
头文件:
<deque>
异常:它从不抛出任何异常
迭代器的有效性:迭代器的有效性在容器中不会改变。
示例:
// C++ program to implement deque::empty
#include <deque>
#include <iostream>
using namespace std;
int main()
{
// Declaration of Deque
deque<int> GFG = { 1, 3, 6, 0, 0 };
if (GFG.empty() == true) {
cout << "The deque is empty" << endl;
}
else {
cout << "The deque is not empty" << endl;
}
return 0;
}
输出:
The deque is not empty
- 时间复杂度- O(1)
- 空间复杂度- O(1)
deque::assign和deque::empty的区别
Item | deque::assign | deque::empty |
---|---|---|
定义 | 它用于将新内容赋给deque容器。 | 它用于检查deque容器是否为空。 |
语法 | dequename.assign(<int> size, <int> val); |
empty() |
参数个数 | 它只接受两个参数 | 无 |
返回值 | 无 | 布尔 |
复杂度 | 线性 | 常数 |