template <class T, class Allocator = allocator<T>> class deque
#include <deque> using namespace std; deque<T> 変数名; deque<int> x; // 空の deque deque<int> x(3); // 要素数が 3 deque<int> x(5, 10); // 5 つの要素を 10 で初期化 deque<int> x(y.it1, y.it2); // it1 から it2 の範囲で初期化 deque<int> x(y); // deque y で初期化 deque<int> x ({1, 2, 3}); // 初期化子リスト,C++11 deque<int> x {1, 2, 3}; // 初期化子リスト,C++11 deque<int> x = {1, 2, 3}; // 初期化子リスト,C++11
deque<pair<int, double>> dq; dq.emplace(dq.begin(), 5, 3.14); dq.emplace(dq.begin(), make_pair(5, 3.14)); dq.insert(dq.begin(), make_pair(10, 1.23)); for (auto x : dq) cout << x.first << " " << x.second << endl;
= == < <= != > >= []
#include <iostream> #include <deque> using namespace std; void print(string str, deque<int> &q) { if (q.empty()) cout << " コンテナ " << str << " は空です\n"; else { cout << str << " の要素数: " << q.size() << endl; for (auto x : q) cout << " " << x; // for (int i1 = 0; i1 < (int)q.size(); i1++) // cout << " " << q[i1]; cout << endl; } } int main() { // 要素を最後に追加(サイズは自動的に増加) // deque<int> q1 = {0, 1, 2, 3, 4}; // deque<int> q1 {0, 1, 2, 3, 4}; deque<int> q1; for(int i1 = 0; i1 < 5; i1++) q1.push_back(i1); cout << "**初期設定**\n"; print("q1", q1); // 2 番目の要素の前,及び,先頭に要素を追加 deque<int>::iterator it = q1.begin() + 1; q1.emplace(it, 5); // q1.insert(it, 5); q1.emplace_front(-1); // q1.push_front(-1); cout << "**2 番目の要素の前,及び,先頭に要素を追加**\n"; print("q1", q1); // 3 番目の要素,最初,及び,最後の要素を削除 it = q1.begin() + 2; q1.erase(it); q1.pop_front(); q1.pop_back(); cout << "**3 番目の要素,最初,及び,最後の要素を削除**\n"; print("q1", q1); // 演算子で比較 cout << "**演算子で比較**\n"; deque<int> q2 = {0, 1, 2, 3}; // 初期化子リストの利用 // deque<int> q2 {0, 1, 2, 3}; // 初期化子リストの利用 print("q2", q2); if (q1 == q2) cout << " 2 つのコンテナ内の要素はすべて等しい\n"; // q2 の最初の 3 つの要素を q1 に代入 cout << "**q2 の最初の 3 つの要素を q1 に代入**\n"; q1.assign(q2.begin(), q2.end()-1); // q1.assign({0, 1, 2}); print("q1", q1); // q1 と q2 を入れ替える cout << "**q1 と q2 を入れ替える**\n"; print("入れ替え前:q1", q1); print("入れ替え前:q2", q2); q1.swap(q2); print("q1", q1); print("q2", q2); // q1 のすべての要素を削除 cout << "**q1 すべての要素を削除**\n"; q1.clear(); print("q1", q1); return 0; }
**初期設定** q1 の要素数: 5 0 1 2 3 4 **2 番目の要素の前,及び,先頭に要素を追加** q1 の要素数: 7 -1 0 5 1 2 3 4 **3 番目の要素,最初,及び,最後の要素を削除** q1 の要素数: 4 0 1 2 3 **演算子で比較** q2 の要素数: 4 0 1 2 3 2 つのコンテナ内の要素はすべて等しい **q2 の最初の 3 つの要素を q1 に代入** q1 の要素数: 3 0 1 2 **q1 と q2 を入れ替える** 入れ替え前:q1 の要素数: 3 0 1 2 入れ替え前:q2 の要素数: 4 0 1 2 3 q1 の要素数: 4 0 1 2 3 q2 の要素数: 3 0 1 2 **q1 すべての要素を削除** コンテナ q1 は空です
菅沼ホーム | 本文目次 | 演習問題解答例 | 付録目次 | 索引 |