deque::cbegin 与 deque::assign 在C++中的区别

deque::cbegin 与 deque::assign 在C++中的区别

双端队列或Deque是带有两端扩展和收缩功能的序列容器。它们类似于向量,但在向结尾和开头插入或删除元素的情况下更有效。与向量不同,不一定保证连续的存储分配。在这里,我们将看到deque::assign和deque::at在C++中的区别。

deque::cbegin

deque::cbegin用于返回指向容器中第一个元素的const迭代器。我们不能使用它来修改所指向的迭代器的内容。

语法:

const_iterator cbegin();

参数: 没有

返回值: 指向序列开头的const_iterator。

迭代器有效性: 迭代器有效性没有改变。

头文件:

<deque>

异常: 它永远不会引发异常。

例子:

//演示deque :: cbegin
  
#include <deque>
#include <iostream>
using namespace std;
  
//Driver code
int main()
{
    //Deque的声明
    deque<int> GFG = { 1, 2, 3, 4, 5 };
  
    cout << "Deque容器中的元素为:";
    for (auto it = GFG.cbegin(); it!= GFG.cend();++ it) {
        cout << * it <<“”;
    }
    cout << endl;
    返回0;
}  

输出:

Deque容器中的元素为:1 2 3 4 5 
  • 时间复杂度 – O(1)
  • 空间复杂度 – O(1)

deque::assign

deque::assign用于通过替换其当前内容来为deque容器分配新内容。它会相应地修改大小。

语法:

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

参数:

  1. size: 它指定要分配给容器的值的数量。
  2. val: 它指定要分配给容器的值。

返回值:

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

头文件:

<deque>

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

例子:

//演示deque :: assign
  
#include <deque>
#include <iostream>
using namespace std;
  
//Driver code
int main()
{
    //Deque的声明
    deque<int> A = { 10, 20, 30, 40, 50, 60 };
    deque<int> B;
  
    //迭代器遍历deque
    deque<int> ::iterator itr = B.begin();
  
    //将deque A元素分配到deque B中
    B.assign(A.begin(), A.end());
 
    cout <<“Deque B中的元素为:”;
    for (itr = B.begin(); itr!= B.end();++ itr) {
        cout << * itr <<“”;
    }
  
    cout << endl;
    返回0;
}  

输出:

Deque B中的元素为:10 20 30 40 50 60 
  • 时间复杂度: O(N)
  • 空间复杂度: O(N)

deque::assign vs deque::cbegin

以下是deque::assign和deque::cbegin之间的区别

基础 deque::cbegin deque::assign
定义 它用于返回指向容器中第一个元素的const迭代器。 它用于向deque容器分配新内容,替换其当前内容。
语法 const_iterator cbegin(); dequename.assign( size, val);
参数 不需要任何参数。 它需要两个参数,即size和val。
返回值 它的返回值是指向序列开头的const_iterator。 它没有任何返回类型。
复杂度 常数 线性

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程