當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ deque::begin和deque::assign的區別用法及代碼示例


雙端隊列(Deque)或雙端隊列是序列容器,具有兩端可伸縮的特性。它們與向量類似,但在末尾和開頭插入和刪除元素的情況下效率更高。與向量不同,可能無法保證連續的存儲分配。這裏我們將看到 C++ 中 deque::assign 和 deque::at 之間的區別。

雙端隊列::開始

deque::begin 用於返回指向雙端隊列容器中第一個元素的迭代器。它返回一個指向它的隨機訪問迭代器。

用法:

 iterator begin();

Parameters: None

返回值:它的返回值是一個指向序列容器開頭的迭代器。

迭代器有效性:迭代器有效性沒有變化

頭文件:

<deque>

異常:deque::begin 永遠不會拋出異常

例子:

C++


// C++ program to implement deque::begin 
  
#include <deque> 
#include <iostream> 
using namespace std; 
  
// Driver code 
int main() 
{ 
    // Declaration of Deque 
    deque<int> GFG = { 1, 2, 3, 4, 5 }; 
  
    // Iterator Pointing to the first element in the 
    // container 
    deque<int>::iterator itr = GFG.begin(); 
  
    cout << "Elements in Deque are : "; 
  
    for (itr = GFG.begin(); itr != GFG.end(); ++itr) { 
        cout << *itr << " "; 
    } 
  
    cout << endl; 
    return 0; 
}

輸出:

Elements in Deque are : 1 2 3 4 5 
  • 時間複雜度:O(N)
  • 空間複雜度:O(1)

雙端隊列::分配

deque::assign 用於通過替換當前內容來將新內容分配給雙端隊列容器。它會相應地修改尺寸

用法:

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

參數:

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

返回值:None

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

頭文件:

<deque>

異常:如果拋出異常,則容器處於有效狀態。

例子:

C++


// C++ program to implement deque::assign 
  
#include <deque> 
#include <iostream> 
using namespace std; 
  
// Driver codea 
int main() 
{ 
    // Declaration of Deque 
    deque<int> A = { 5, 10, 15, 20 }; 
    deque<int> B; 
  
    // Iterator for deque B to traverse 
    deque<int>::iterator itr1 = B.begin(); 
  
    // Iterator for deque A to traverse 
    deque<int>::iterator itr2 = A.begin(); 
  
    // Assigning deque A elements 
    // into deque B 
    B.assign(A.begin(), A.end()); 
  
    cout << "Elements in Container A are : "; 
    for (itr2 = A.begin(); itr2 != A.end(); ++itr2) { 
        cout << *itr2 << " "; 
    } 
    cout << endl; 
  
    cout << "Elements in Container B are : "; 
    for (itr1 = B.begin(); itr1 != B.end(); ++itr1) { 
        cout << *itr1 << " "; 
    } 
  
    cout << endl; 
    return 0; 
}

輸出:

Elements in Container A are : 5 10 15 20 
Elements in Container B are : 5 10 15 20 
  • 時間複雜度:O(N)
  • 空間複雜度:O(N)

雙端隊列::分配與雙端隊列::開始

以下是 deque::assign 和 deque::begin 之間的區別

基礎 雙端隊列::開始 雙端隊列::分配
Definition 它用於返回指向雙端隊列容器中第一個元素的迭代器。 它用於將新內容返回到雙端隊列容器,替換其當前內容
Syntax 迭代器begin(); dequename.assign(<int> size, <int> val);
參數數量 它不帶任何參數 它需要兩個參數。
返回值 它的返回值是一個指向序列容器開頭的迭代器。 它沒有任何返回類型
Complexity Constant Linear


相關用法


注:本文由純淨天空篩選整理自mayank007rawa大神的英文原創作品 Difference Between deque::begin and deque::assign in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。