[C++] dequeの変数を初期化する方法
C++でdeque
を初期化する方法は複数あります。deque
は標準ライブラリのコンテナで、動的配列のように要素を追加・削除できます。
デフォルトコンストラクタを使用して空のdeque
を作成することができます。また、サイズを指定して初期化することも可能で、その場合はすべての要素がデフォルト値で初期化されます。
さらに、初期化リストを使用して特定の値でdeque
を初期化することもできます。これにより、特定の要素を持つdeque
を簡単に作成できます。
- dequeのさまざまな初期化方法
- スタックやキューとしてのdequeの使用方法
- 双方向リストとしてのdequeの活用例
dequeの初期化方法
C++のdeque
(デック)は、両端からの高速な挿入と削除が可能なコンテナです。
ここでは、deque
のさまざまな初期化方法について説明します。
デフォルトコンストラクタによる初期化
デフォルトコンストラクタを使用すると、空のdeque
を作成できます。
#include <iostream>
#include <deque>
int main() {
std::deque<int> myDeque; // 空のdequeを作成
std::cout << "Size of myDeque: " << myDeque.size() << std::endl;
return 0;
}
Size of myDeque: 0
このコードは、要素が一つもない空のdeque
を作成し、そのサイズを出力します。
サイズを指定した初期化
特定のサイズでdeque
を初期化することも可能です。
この場合、要素はデフォルト値で初期化されます。
#include <iostream>
#include <deque>
int main() {
std::deque<int> myDeque(5); // サイズ5のdequeを作成
std::cout << "Size of myDeque: " << myDeque.size() << std::endl;
return 0;
}
Size of myDeque: 5
この例では、5つの要素を持つdeque
が作成され、各要素はデフォルト値(int型
の場合は0)で初期化されます。
値を指定した初期化
すべての要素を特定の値で初期化することもできます。
#include <iostream>
#include <deque>
int main() {
std::deque<int> myDeque(5, 10); // サイズ5で、すべての要素を10で初期化
for (int value : myDeque) {
std::cout << value << " ";
}
return 0;
}
10 10 10 10 10
このコードは、5つの要素を持ち、すべての要素が10で初期化されたdeque
を作成します。
イテレータを使用した初期化
他のコンテナからイテレータを使用してdeque
を初期化することができます。
#include <iostream>
#include <deque>
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
std::deque<int> myDeque(myVector.begin(), myVector.end()); // vectorからdequeを初期化
for (int value : myDeque) {
std::cout << value << " ";
}
return 0;
}
1 2 3 4 5
この例では、vector
の要素を使ってdeque
を初期化しています。
コピーコンストラクタによる初期化
既存のdeque
をコピーして新しいdeque
を作成することができます。
#include <iostream>
#include <deque>
int main() {
std::deque<int> originalDeque = {1, 2, 3};
std::deque<int> copiedDeque(originalDeque); // コピーコンストラクタを使用
for (int value : copiedDeque) {
std::cout << value << " ";
}
return 0;
}
1 2 3
このコードは、originalDeque
の内容をコピーしてcopiedDeque
を作成します。
ムーブコンストラクタによる初期化
ムーブコンストラクタを使用して、リソースを効率的に移動することができます。
#include <iostream>
#include <deque>
int main() {
std::deque<int> originalDeque = {1, 2, 3};
std::deque<int> movedDeque(std::move(originalDeque)); // ムーブコンストラクタを使用
std::cout << "Size of originalDeque: " << originalDeque.size() << std::endl;
std::cout << "Size of movedDeque: " << movedDeque.size() << std::endl;
return 0;
}
Size of originalDeque: 0
Size of movedDeque: 3
この例では、originalDeque
のリソースがmovedDeque
に移動され、originalDeque
は空になります。
初期化リストを使用した初期化
初期化リストを使って、deque
を簡単に初期化することができます。
#include <iostream>
#include <deque>
int main() {
std::deque<int> myDeque = {1, 2, 3, 4, 5}; // 初期化リストを使用
for (int value : myDeque) {
std::cout << value << " ";
}
return 0;
}
1 2 3 4 5
このコードは、初期化リストを使ってdeque
を初期化し、要素を出力します。
dequeの応用例
deque
はその柔軟性と効率性から、さまざまな用途で使用されます。
ここでは、deque
をスタック、キュー、双方向リストとして使用する方法を紹介します。
スタックとしての使用
deque
は、スタック(後入れ先出し、LIFO)として使用することができます。
push_back
で要素を追加し、pop_back
で要素を削除します。
#include <iostream>
#include <deque>
int main() {
std::deque<int> stack;
stack.push_back(1); // スタックに1を追加
stack.push_back(2); // スタックに2を追加
stack.push_back(3); // スタックに3を追加
while (!stack.empty()) {
std::cout << stack.back() << " "; // スタックのトップを出力
stack.pop_back(); // スタックのトップを削除
}
return 0;
}
3 2 1
この例では、deque
をスタックとして使用し、要素を追加してから逆順に出力しています。
キューとしての使用
deque
は、キュー(先入れ先出し、FIFO)としても使用できます。
push_back
で要素を追加し、pop_front
で要素を削除します。
#include <iostream>
#include <deque>
int main() {
std::deque<int> queue;
queue.push_back(1); // キューに1を追加
queue.push_back(2); // キューに2を追加
queue.push_back(3); // キューに3を追加
while (!queue.empty()) {
std::cout << queue.front() << " "; // キューの先頭を出力
queue.pop_front(); // キューの先頭を削除
}
return 0;
}
1 2 3
このコードは、deque
をキューとして使用し、要素を追加してから順番に出力しています。
双方向リストとしての使用
deque
は、双方向リストとしても利用できます。
push_front
とpush_back
を使って両端に要素を追加し、pop_front
とpop_back
で削除します。
#include <iostream>
#include <deque>
int main() {
std::deque<int> bidirectionalList;
bidirectionalList.push_back(1); // 後ろに1を追加
bidirectionalList.push_front(0); // 前に0を追加
bidirectionalList.push_back(2); // 後ろに2を追加
for (int value : bidirectionalList) {
std::cout << value << " "; // 双方向リストの要素を出力
}
return 0;
}
0 1 2
この例では、deque
を双方向リストとして使用し、両端に要素を追加してから出力しています。
deque
の柔軟性を活かして、さまざまなデータ構造として利用することが可能です。
よくある質問
まとめ
この記事では、C++のdeque
の初期化方法とその応用例について詳しく解説しました。
deque
の多様な初期化方法を理解することで、プログラムの柔軟性と効率性を高めることが可能です。
これを機に、deque
を活用した新しいプログラムを作成し、実際の開発に役立ててみてください。