C++ Builder CE fragment and/or tips

queueすなわちキュー

の続きです。流れともいふ。時々しか使わないので、実例から

拙作のユーティリティープログラムである、Remote Repository Manager

での使用例を示します。レポジトリを複数選択して一括deleteする時に、選択されたレポジトリをキューに入れて、逐次実際のdeleteをするという場面です。詳細を省いて、コアな部分だけ書くと、

#include <queue>

std::queue<String> que;

	for( int i = 0 ; i < ListView1->Items->Count ; i++ ){
		aentry = ListView1->Items->Item[i];
		if( aentry->Checked ){
			a = aentry->SubItems;
			String deleteone = a->Strings[0];
			//int id = StrToInt(a->Strings[1]);
			que.push(deleteone);
			Memo2->Lines->Add("path : " + deleteone + "pushed");
		}

	}

queueへの追加pushは、上記のようにque.pushだけ。逐次削除する部分は、

  while (!que.empty()) {
	String nextpath = que.front();
	DeleteOne(nextpath);
	Memo2->Lines->Add("delete cycle finished for " + nextpath);
	que.pop();
  }

que.front()で取り出して、que.pop()で後始末ですね。”ひと当たり”ロジックとしてしか参考になりませんが、悪しからず。そのうちソースコード公開するかもしれません。

補足Giteaには他のサーバ上のレポジトリを取り込む機能、彼らはMigrateといってますが、そういう機能があります。選択したレポジトリをいったんqueueに入れておいて、後で一括Migrateするという場合にもqueueを使っています。それにしてもqueueってspelling憶え辛いですね。って、困難というほどではありませんが。ちなみにGiteaお勧めです。軽いです。インストールはGitlab程ではないですが、比較的簡単です。

コメント