雙端隊列(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)
參數:
- size:它指定要分配給容器的值的數量。
- 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 |
相關用法
- C++ deque::push_back()用法及代碼示例
- C++ deque::push_front()用法及代碼示例
- C++ deque::emplace_front()、deque::emplace_back()用法及代碼示例
- C++ deque::at()、deque::swap()用法及代碼示例
- C++ deque::clear()、deque::erase()用法及代碼示例
- C++ deque::empty()、deque::size()用法及代碼示例
- C++ deque::front()、deque::back()用法及代碼示例
- C++ deque::pop_front()、deque::pop_back()用法及代碼示例
- C++ deque::cbegin和deque::assign的區別用法及代碼示例
- C++ deque::assign和deque::back的區別用法及代碼示例
- C++ deque::assign和deque::empty的區別用法及代碼示例
- C++ deque::assign和deque::at的區別用法及代碼示例
- C++ deque assign()用法及代碼示例
- C++ deque cbegin()用法及代碼示例
- C++ deque insert()用法及代碼示例
- C++ deque max_size()用法及代碼示例
- C++ deque rbegin()用法及代碼示例
- C++ deque rend()用法及代碼示例
- C++ deque resize()用法及代碼示例
- C++ deque crbegin用法及代碼示例
- C++ deque crend用法及代碼示例
- C++ deque emplace用法及代碼示例
- C++ deque get_allocator用法及代碼示例
- C++ deque shrink_to_fit用法及代碼示例
- C++ delete()用法及代碼示例
注:本文由純淨天空篩選整理自mayank007rawa大神的英文原創作品 Difference Between deque::begin and deque::assign in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。