アフィリエイト広告を利用しています

広告

posted by fanblog

2018年02月12日

《その288》 両端キュー dequr<>


 両端キュー dequr<>

 C++ が提供するコンテナライブラリには、vector<> 以外にもいろいろあります。
今回は、その中の dequr<> について、ごく簡単にですが、チェックしてみます。

 deque は vector と同じ動的配列クラスで、オブジェクトの外に記憶域を確保しますが、配列要素データを連続したアドレスに収納するとは限らない点が、vector とは異なります。

 先頭側からも末尾側からも要素へのアクセスが容易にできるので、両端キューと呼ばれていますが、特に、先頭側からのアクセスが多い処理に使われることが多いようです。
操作性やメンバ関数は、vector によく似ています。

 下記のプログラムを順にみていきます。

最初に、
  deque a(2, 5);
で、要素数 2、各値が 5 の dequeオブジェクト a を生成します。

次に、先頭側から、
  push_front関数
で値を挿入し、続いて末尾側から、
  push_back関数
で値を挿入しています。

コピーコンストラクタで dequeオブジェクト b を生成します。
  deque b(a);

オブジェクト b の先頭要素を、
  pop_front関数
で削除して、最後に
  swap関数
で、a, b の要素を交換しています。

 以下はプログラムです。

#include <deque>
#include <iostream>
using namespace std;

void disp(deque<int>& x) {
for (unsigned i = 0; i < x.size(); i++)
cout << x[i] << ' ';
cout << '\n';
}

int main() {
cout << "deque<int> a(2, 5);\n";
deque<int> a(2, 5);
cout << "a … "; disp(a);
cout << '\n';

cout << "先頭に、4, 3, 2, 1 "
"の順に値を挿入\n";
for (unsigned i = 4; i > 0; i--)
a.push_front(i);

cout << "末尾に、6, 7, 8, 9 "
"の順に値を挿入\n\n";
for (unsigned i = 6; i < 10; i++)
a.push_back(i);

cout << "a … "; disp(a);
cout << '\n';

cout << "deque<int> b(a);\n";
deque<int> b(a);
cout << "b … "; disp(b);
cout << '\n';

cout << "b の先頭要素を 5回削除\n";
for (unsigned i = 0; i< 5; i++)
b.pop_front();
cout << "b … "; disp(b);
cout << '\n';

cout << "b.swap(a);";
b.swap(a); cout << '\n';
cout << "a … "; disp(a);
cout << "b … "; disp(b);
}

f10_0007.png



この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/7309020
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


検索
<< 2018年08月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
プロフィール
こうすけさんの画像
こうすけ

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


×

この広告は30日以上新しい記事の更新がないブログに表示されております。