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


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


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

雙端隊列::分配

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

用法:

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

參數:

  • 1.尺寸:它指定要分配給容器的值的數量。
    2. 值:它指定要分配給容器的值。

在此容器中,所有迭代器、指針和引用均無效。使用 deque::assign 的頭文件是 <deque>。如果拋出異常,則容器處於有效狀態。

下麵是實現 deque::assign 的 C++ 程序:

C++


// C++ program to implement deque::assign 
#include <iostream>   
#include<deque>   
using namespace std; 
  
// Driver code 
int main()   
{   
  // Declaration of Deque 
  deque<int> first = {10, 20, 30, 40, 50, 60};   
  deque<int> second;   
    
  // Iterator for deque to traverse  
  deque<int>::iterator itr = second.begin();  
    
  // Assigning first deque elements  
  // into second 
  second.assign(first.begin(), 
                 first.end());  
    
  cout << "Elements after assigning : "; 
  for(itr = second.begin(); 
      itr != second.end(); ++itr)   
  { 
    cout <<*itr<<" ";  
  } 
    
  cout << endl; 
  return 0;   
}
輸出
Elements after assigning : 10 20 30 40 50 60 
  • 時間複雜度:在)。
  • 空間複雜度:在)。

雙端隊列::在

deque::at()、deque::swap()用於返回對位置元素的引用x在雙端隊列容器對象中。 Deque::at 自動檢查是否x是否在容器中有效元素的範圍內。

用法:

at (size_type n);

參數:

Position of the element to be fetched.

返回值:直接引用給定位置的元素。

在此容器中,所有迭代器都是有效的。使用 deque::at 的頭文件是 <deque>。

異常:

  1. 如果拋出異常,則容器中不會發生任何變化。
  2. 如果 n 超出範圍,它會拋出out_of_range。

下麵是實現 deque::at 的 C++ 程序:

C++


// C++ program to implement 
// deque::at 
#include <iostream> 
#include <deque> 
using namespace std; 
  
// Driver code 
int main () 
{ 
  // 10 zero-initialized unsigneds 
  deque<int> gfg (10);    
  
  // Here we have assigned some values  
  for (int i = 0; i < gfg.size(); i++) 
    gfg.at(i) = i; 
  
  cout << "Elements after using deque::at -:"; 
  for (int i = 0; i < gfg.size(); i++) 
  { 
    cout << ' ' << gfg.at(i); 
  } 
    
  cout << endl; 
  return 0; 
}
輸出
Elements after using deque::at -: 0 1 2 3 4 5 6 7 8 9
  • 時間複雜度:O(1)
  • 空間複雜度:O(1)

雙端隊列::分配與雙端隊列::at

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

基礎 雙端隊列::分配 雙端隊列::在
定義 它用於將新內容分配給雙端隊列容器,替換其當前內容 它用於返回對雙端隊列容器對象中位置 n 的元素的引用。
用法 dequename.assign(<int> size, <int> val); 參考 (size_type n);
參數數量 它需要兩個參數。 它隻需要一個參數。
返回值 它沒有任何返回類型。 返回對給定位置的元素的直接引用。
複雜度 其複雜度是線性的。 它的複雜性是恒定的。


相關用法


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