当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ deque::assign和deque::empty的区别用法及代码示例


双端队列(Deque)或双端队列是序列容器,具有两端扩展和收缩的特性。它们与向量类似,但在末尾和开头插入和删除元素的情况下效率更高。与向量不同,可能无法保证连续的存储分配。

这里我们将看到 C++ 中 deque::assign 和 deque::at 之间的区别。

双端队列::分配

deque::assign 用于通过替换当前内容来将新内容分配给双端队列容器。它会相应地改变其大小。

用法:

dequename.assign(<int> size, <int> val)

参数:

  1. size -要分配给容器的值的数量。
  2. val -要分配给容器的值。

头文件:

<deque>

异常:如果抛出异常,则容器处于有效状态。

迭代器有效性:在此容器中,所有迭代器、指针和引用均无效。

例子:

C++


// 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 用于检查双端队列容器是否为空。它不会改变容器中的任何内容。

用法:

empty();

头文件:

<deque>

异常:它永远不会抛出任何异常

迭代器有效性:迭代器有效性在此容器中不会改变。

例子:

C++


// 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 之间的区别

Basis

双端队列::分配

双端队列::空

定义 它用于将新内容分配给双端队列容器。 它用于检查双端队列是否为空。
用法 dequename.assign(<int> size, <int> val); empty()
参数数量 只需要两个参数 None
返回值 None Boolean
复杂度 Linear Constant


相关用法


注:本文由纯净天空筛选整理自mayankrawal545大神的英文原创作品 Difference Between deque::assign and deque::empty in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。