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>。
異常:
- 如果拋出異常,則容器中不會發生任何變化。
- 如果 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); |
參數數量 | 它需要兩個參數。 | 它隻需要一個參數。 |
返回值 | 它沒有任何返回類型。 | 返回對給定位置的元素的直接引用。 |
複雜度 | 其複雜度是線性的。 | 它的複雜性是恒定的。 |
相關用法
- C++ deque::assign和deque::back的區別用法及代碼示例
- C++ deque::assign和deque::empty的區別用法及代碼示例
- C++ deque::at()、deque::swap()用法及代碼示例
- C++ deque::push_back()用法及代碼示例
- C++ deque::push_front()用法及代碼示例
- C++ deque::emplace_front()、deque::emplace_back()用法及代碼示例
- 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::begin和deque::assign的區別用法及代碼示例
- 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::assign and deque::at in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。