<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++/CLI</title><link>http://blogs.wankuma.com/episteme/category/417.aspx</link><description>C++/CLI</description><managingEditor>επιστημη</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>επιστημη</dc:creator><title>夢に出そう...</title><link>http://blogs.wankuma.com/episteme/archive/2008/08/21/153738.aspx</link><pubDate>Thu, 21 Aug 2008 00:14:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/08/21/153738.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/153738.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/08/21/153738.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/153738.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/153738.aspx</trackback:ping><description>&lt;P&gt;オノデラさんとこからパクったPNGに差し替え、&lt;BR&gt;フォントをメイリオにして"わんくま同盟"6文字分の&lt;BR&gt;SpriteFontをこしらえて背景色いぢって、と。&lt;BR&gt;&lt;BR&gt;&lt;IMG height=320 src="http://episteme.wankuma.com/image/XNAWankuma.jpg" width=411&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;くま弾幕&lt;/STRONG&gt;。&lt;BR&gt;※ プロジェクトは&lt;A id=_2637f0e626096a42_HomePageDays_DaysList__ctl2_DayItem_DayList__ctl0_TitleUrl HREF="/episteme/archive/2008/08/16/153225.aspx"&gt;&lt;FONT color=#0000ff&gt;ぽろろっか&lt;/FONT&gt;&lt;/A&gt;のを差し替え。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/153738.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>ぽろろっか</title><link>http://blogs.wankuma.com/episteme/archive/2008/08/16/153225.aspx</link><pubDate>Sat, 16 Aug 2008 15:53:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/08/16/153225.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/153225.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/08/16/153225.aspx#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/153225.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/153225.aspx</trackback:ping><description>ふー、ようやっとVisual Studio 2008 SP1 にupdate完了。&lt;BR&gt;&lt;BR&gt;手始めになにやろかってんで、XNA Game Studio が吐いた&lt;BR&gt;C#コードを&lt;STRONG&gt;C++/CLIに移植してみた&lt;/STRONG&gt;。← ﾔﾝﾈｰﾖふつー&lt;BR&gt;&lt;BR&gt;元ネタは先日赤坂さんがやってくれた"しいたけセッション"&lt;BR&gt;にあった「弾幕もどき」。&lt;BR&gt;&lt;BR&gt;Game Studio が吐いたGame1.cs を削除し、代わりにC++/CLIで&lt;BR&gt;Game1.csをポートしたアセンブリの参照を設定。&lt;BR&gt;C#で書けるならC++/CLIでも書けっだろーってことで。&lt;BR&gt;&lt;BR&gt;&lt;IMG height=320 src="http://episteme.wankuma.com/image/danmaku.jpg" width=411&gt;&lt;BR&gt;↑...無理。スキマがありましぇん。&lt;BR&gt;&lt;BR&gt;プロジェクトはコレ。&lt;BR&gt;&lt;IFRAME style="BORDER-RIGHT: #dde5e9 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #dde5e9 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #dde5e9 1px solid; WIDTH: 240px; PADDING-TOP: 0px; BORDER-BOTTOM: #dde5e9 1px solid; HEIGHT: 66px; BACKGROUND-COLOR: #ffffff" marginWidth=0 marginHeight=0 src="http://cid-07c558f8e11e708f.skydrive.live.com/embedrowdetail.aspx/WillBeRemovedSoon/WindowsGame1.zip" frameBorder=0 scrolling=no&gt;&lt;/IFRAME&gt;&lt;BR&gt;[追記] ↑VBでもやってみたぉ(プロジェクトに同梱)。&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/153225.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>blogだけでは飽き足らず</title><link>http://blogs.wankuma.com/episteme/archive/2008/08/13/152929.aspx</link><pubDate>Wed, 13 Aug 2008 22:16:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/08/13/152929.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/152929.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/08/13/152929.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/152929.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/152929.aspx</trackback:ping><description>&lt;P&gt;&lt;A id=viewpost.ascx_TitleUrl href="/episteme/archive/2008/07/06/147603.aspx"&gt;&lt;FONT color=#0000ff&gt;夏も初めのごめんなさい&lt;/FONT&gt;&lt;/A&gt; あたりから&lt;BR&gt;短期集中連載(?)してたマージ・ソートの「まとめ」をCodeZineに書きました。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://codezine.jp/a/article/aid/2886.aspx"&gt;&lt;FONT color=#0000ff&gt;マージ・ソート : 巨大データのソート法&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;ての。&lt;BR&gt;マージ・ソートのアルゴリズム解説とその実装を&lt;BR&gt;VB, C#, C++/CLI でやらかしてます。&lt;BR&gt;&lt;BR&gt;インスパイア元 → &lt;A id=viewpost.ascx_TitleUrl href="/naka/archive/2008/08/13/152858.aspx"&gt;&lt;FONT color=#0000ff&gt;すごいひとです！&lt;/FONT&gt;&lt;/A&gt; &lt;BR&gt;名著 「&lt;A href="http://astore.amazon.co.jp/episteme00-22/detail/4764901625/503-6660086-6234330"&gt;&lt;FONT color=#206ba2&gt;アルゴリズムとデータ構造&lt;/FONT&gt;&lt;/A&gt;」をよこちょに置いて書いてました。&lt;BR&gt;いやね、WPFとかWCFとかLINQとかXNAとか、みんなすごいなーと&lt;BR&gt;思うんですよ。僕は新しいことに手を染めず、そこそこ枯れてきた頃に&lt;BR&gt;美味しいとこだけ頂戴するばかりです。&lt;BR&gt;&lt;BR&gt;もう幾度となく繰り返してることですが、近頃のビギナ(に限らんかな)は&lt;BR&gt;本を読まなくなりました。大概のことはネット検索すりゃカタがつきます&lt;BR&gt;しね。けども僕は本を大事にしたい。「アルゴリズムとデータ構造」はもう&lt;BR&gt;30年以上前の解説書です。けども僕のプログラマ稼業でいちばん役に立った&lt;BR&gt;本だし今でもときおり読み返します。&lt;BR&gt;&lt;BR&gt;まぁ、そんな想いを若い人たちにちょっとでも伝えたくて、ほんのりカビ&lt;BR&gt;臭いこんなネタを書いてみたりするわけね。&lt;BR&gt;&lt;BR&gt;よろしく御贔屓のほどを。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/152929.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>なぜないのか不思議なので作ってみた</title><link>http://blogs.wankuma.com/episteme/archive/2008/07/24/150088.aspx</link><pubDate>Thu, 24 Jul 2008 16:42:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/24/150088.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/150088.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/24/150088.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/150088.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/150088.aspx</trackback:ping><description>&lt;P&gt;STL/CLRの&amp;lt;iterator&amp;gt;には &lt;BR&gt;back_insert_iterator / front_insert_iterator / insert_iterator が定義されてねぇのす。&lt;BR&gt;&lt;BR&gt;お試しにこしらえてみた。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;template&amp;lt;typename Container&amp;gt;&lt;BR&gt;ref class &lt;FONT color=#ff0000&gt;back_insert_iterator&lt;/FONT&gt; {&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp; typedef cliext::output_iterator_tag iterator_category;&lt;BR&gt;&amp;nbsp; typedef typename Container::value_type value_type;&lt;BR&gt;&amp;nbsp; back_insert_iterator(Container^ c) : container(c) {}&lt;BR&gt;&amp;nbsp; back_insert_iterator% operator=(value_type% val) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { container-&amp;gt;push_back(val); return *this; }&lt;BR&gt;&amp;nbsp; static back_insert_iterator% operator*(back_insert_iterator% i) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { return i; }&lt;BR&gt;&amp;nbsp; back_insert_iterator% operator++() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { return *this; }&lt;BR&gt;&amp;nbsp; back_insert_iterator% operator++(int) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { return *this; }&lt;BR&gt;protected:&lt;BR&gt;&amp;nbsp; Container^ container;&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;template&amp;lt;typename Container&amp;gt; inline&lt;BR&gt;&lt;FONT color=#ff0000&gt;back_insert_iterator&lt;/FONT&gt;&amp;lt;Container&amp;gt;^ &lt;FONT color=#0000ff&gt;back_inserter&lt;/FONT&gt;(Container^ c) {&lt;BR&gt;&amp;nbsp; return gcnew &lt;FONT color=#ff0000&gt;back_insert_iterator&lt;/FONT&gt;&amp;lt;Container&amp;gt;(c);&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;int main() {&lt;BR&gt;&amp;nbsp; cliext::vector&amp;lt;String^&amp;gt; v0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;v0.push_back(L"相川");&lt;BR&gt;&amp;nbsp;&amp;nbsp;v0.push_back(L"井上");&lt;BR&gt;&amp;nbsp;&amp;nbsp;v0.push_back(L"上村");&lt;BR&gt;&amp;nbsp;&amp;nbsp;v0.push_back(L"えぴ");&lt;BR&gt;&amp;nbsp;&amp;nbsp;v0.push_back(L"小田");&lt;BR&gt;&amp;nbsp;&amp;nbsp;cliext::vector&amp;lt;String^&amp;gt; v1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;cliext::remove_copy(v0.begin(), v0.end(), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;back_inserter&lt;/FONT&gt;(%v1), gcnew String(L"えぴ"));&lt;BR&gt;&amp;nbsp;&amp;nbsp;for each ( String^ item in v1) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::WriteLine(item);&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;... こんなんでいいのかなー。&lt;BR&gt;どデカい穴空いてる気がしてなんね。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/150088.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>あるもーん♪</title><link>http://blogs.wankuma.com/episteme/archive/2008/07/18/149647.aspx</link><pubDate>Fri, 18 Jul 2008 23:05:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/18/149647.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/149647.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/18/149647.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/149647.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/149647.aspx</trackback:ping><description>&lt;P&gt;ネタ元 → &lt;A id=viewpost.ascx_TitleUrl HREF="/rti/archive/2008/07/18/149606.aspx" addEventLogcatcher="true"&gt;&lt;FONT color=#0066aa&gt;順列生成メソッド&lt;/FONT&gt;&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;STL/CLRの出番だぜ。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;--- myutil.h ---&lt;BR&gt;namespace MyUtil {&lt;BR&gt;&amp;nbsp; public ref class Algrithm {&lt;BR&gt;&amp;nbsp; public:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static bool &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;NextPermutation&lt;/FONT&gt;&lt;/STRONG&gt;(String^% str);&lt;BR&gt;&amp;nbsp; };&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;--- myutil.cpp ---&lt;BR&gt;#include &amp;lt;cliext/algorithm&amp;gt;&lt;BR&gt;#include &amp;lt;cliext/vector&amp;gt;&lt;BR&gt;#include "myutil.h"&lt;BR&gt;&lt;BR&gt;namespace MyUtil {&lt;BR&gt;&amp;nbsp; bool Algrithm::&lt;FONT color=#0000ff&gt;NextPermutation&lt;/FONT&gt;(String^% str) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cliext::vector&amp;lt;Char&amp;gt; v(str-&amp;gt;ToCharArray());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool result = cliext::&lt;FONT color=#ff0000&gt;next_permutation&lt;/FONT&gt;(v.begin(),v.end()); &lt;FONT color=#008000&gt;// あるもーん&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = gcnew String(v.to_array());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;--- user.cs ---&lt;BR&gt;using System;&lt;BR&gt;using MyUtil;&lt;BR&gt;&lt;BR&gt;class Program {&lt;BR&gt;&amp;nbsp; static void Main(string[] args) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string str = "ABCD";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;do {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(str);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} while ( &lt;FONT color=#0000ff&gt;Algrithm.NextPermutation&lt;/FONT&gt;(ref str) );&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/149647.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>マージソートいちおー終結</title><link>http://blogs.wankuma.com/episteme/archive/2008/07/11/148526.aspx</link><pubDate>Fri, 11 Jul 2008 13:46:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/11/148526.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/148526.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/11/148526.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/148526.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/148526.aspx</trackback:ping><description>&lt;P&gt;テキストファイルに書かれた改行区切りの文字列群を昇順にソートします。&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME style="BORDER-RIGHT: #dde5e9 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #dde5e9 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #dde5e9 1px solid; WIDTH: 240px; PADDING-TOP: 0px; BORDER-BOTTOM: #dde5e9 1px solid; HEIGHT: 66px; BACKGROUND-COLOR: #ffffff" marginWidth=0 marginHeight=0 src="http://cid-07c558f8e11e708f.skydrive.live.com/embedrowdetail.aspx/WillBeRemovedSoon/MergeSort.zip" frameBorder=0 scrolling=no&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;C#, VB.NET, C++/CLI のプロジェクトを詰め込みました。&lt;BR&gt;&lt;BR&gt;[追記] ちょびっといぢりました。1MBを限度にメモリに読み込み、&lt;BR&gt;ソートして書き出すことで連を減らしています。より高速になったかと。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/148526.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>暗いｼﾞﾒｼﾞﾒしたとこのご紹介</title><link>http://blogs.wankuma.com/episteme/archive/2008/07/07/147801.aspx</link><pubDate>Mon, 07 Jul 2008 20:08:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/07/147801.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/147801.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/07/147801.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/147801.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/147801.aspx</trackback:ping><description>&lt;P&gt;はい、そゆわけで &lt;A id=viewpost.ascx_TitleUrl HREF="/episteme/archive/2008/05/23/139034.aspx"&gt;&lt;FONT color=#0000ff&gt;おにょれ赤坂&lt;/FONT&gt;&lt;/A&gt; でちらっとこぼしたネタをば&lt;BR&gt;&lt;BR&gt;CodeZine 「&lt;A href="http://codezine.jp/a/article/aid/2664.aspx"&gt;STL/CLRツアーガイド&lt;/A&gt;」に書きました。&lt;BR&gt;&lt;BR&gt;白状すればSTL/CLRはまだまだいぢり倒してないんですよねー&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/147801.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>夏も初めの以下省略:ふぉろー</title><link>http://blogs.wankuma.com/episteme/archive/2008/07/06/147578.aspx</link><pubDate>Sun, 06 Jul 2008 09:46:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/06/147578.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/147578.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/06/147578.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/147578.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/147578.aspx</trackback:ping><description>&lt;P&gt;C++/CLI「επιστημηさんまで私を忘れたのですか？」 &lt;BR&gt;書いてみた...つか、C#版を機械的にportしただけ。&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;using namespace System;&lt;BR&gt;using namespace System::Collections::Generic;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;// 二つのキューをマージ(併合)して一つにする&lt;BR&gt;&lt;/FONT&gt;generic&amp;lt;typename T&amp;gt; where T : IComparable&amp;lt;T&amp;gt;&lt;BR&gt;void merge(Queue&amp;lt;T&amp;gt;^ in_q1, Queue&amp;lt;T&amp;gt;^ in_q2, ICollection&amp;lt;T&amp;gt;^ out_c) {&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp; // 入力である二つのキューが共に要素を持っている間&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; while ( in_q1-&amp;gt;Count != 0 &amp;amp;&amp;amp; in_q2-&amp;gt;Count != 0 ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000&gt; // より小さい要素を取り出して出力する&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; out_c-&amp;gt;Add(( in_q1-&amp;gt;Peek()-&amp;gt;CompareTo(in_q2-&amp;gt;Peek()) &amp;lt; 0 )? in_q1-&amp;gt;Dequeue():in_q2-&amp;gt;Dequeue());&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; &lt;FONT color=#008000&gt;// キューに残る(取り出されなかった)要素を出力する&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; while ( in_q1-&amp;gt;Count != 0 ) { out_c-&amp;gt;Add(in_q1-&amp;gt;Dequeue()); }&lt;BR&gt;&amp;nbsp; while ( in_q2-&amp;gt;Count != 0 ) { out_c-&amp;gt;Add(in_q2-&amp;gt;Dequeue()); }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;// 一つの入力列を二つのキューに分割する&lt;/FONT&gt;&lt;BR&gt;generic&amp;lt;typename T&amp;gt; where T : IComparable&amp;lt;T&amp;gt;&lt;BR&gt;bool split(ICollection&amp;lt;T&amp;gt;^ in_c, Queue&amp;lt;T&amp;gt;^ out_c1, Queue&amp;lt;T&amp;gt;^ out_c2) {&lt;BR&gt;&amp;nbsp; T last;&lt;BR&gt;&amp;nbsp; Queue&amp;lt;T&amp;gt;^ out_c = out_c1;&lt;BR&gt;&amp;nbsp; bool switched = false;&lt;BR&gt;&amp;nbsp; for each ( T current in in_c ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 直前の要素より小さな要素を読み込んだら出力キューを切り替える&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( last != nullptr &amp;amp;&amp;amp; current-&amp;gt;CompareTo(last) &amp;lt; 0 ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out_c = (out_c == out_c1) ? out_c2 : out_c1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; out_c-&amp;gt;Enqueue(last = current);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 一度でも切り替えが起こったらswitchedをtrueにする&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( !switched ) switched = (out_c == out_c2);&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; return switched;&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;generic&amp;lt;typename T&amp;gt;&lt;BR&gt;void print(String^ head, IEnumerable&amp;lt;T&amp;gt;^ collection) {&lt;BR&gt;&amp;nbsp; Console::Write("{0} : ", head);&lt;BR&gt;&amp;nbsp; for each ( T item in collection ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::Write("{0} ", item);&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; Console::WriteLine();&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;generic&amp;lt;typename T&amp;gt; where T : IComparable&amp;lt;T&amp;gt;&lt;BR&gt;void merge_sort(ICollection&amp;lt;T&amp;gt;^ data) {&lt;BR&gt;&amp;nbsp; Queue&amp;lt;T&amp;gt;^ q1 = gcnew Queue&amp;lt;T&amp;gt;();&lt;BR&gt;&amp;nbsp; Queue&amp;lt;T&amp;gt;^ q2 = gcnew Queue&amp;lt;T&amp;gt;();&lt;BR&gt;&amp;nbsp; while ( split(data, q1, q2) ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::WriteLine(L"--------------------------------");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(L"input&amp;nbsp; ", data);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::WriteLine("split:");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(L"queue1 ", q1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(L"queue2 ", q2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data-&amp;gt;Clear();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; merge(q1, q2, data);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::WriteLine(L"merge:");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(L"output ", data);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; q1-&amp;gt;Clear();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; q2-&amp;gt;Clear();&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;int main() {&lt;BR&gt;&amp;nbsp; List&amp;lt;int&amp;gt;^ data = gcnew List&amp;lt;int&amp;gt;(gcnew array&amp;lt;int&amp;gt; { 1, 3, 2, 5, 4, 7, 6, 9, 8, 0, 13, 12, 11 });&lt;BR&gt;&amp;nbsp; merge_sort(data);&lt;BR&gt;&amp;nbsp; Console::WriteLine(L"--------------------------------");&lt;BR&gt;&amp;nbsp; print(L"result ", data);&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/147578.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>こうですね、わかります。</title><link>http://blogs.wankuma.com/episteme/archive/2008/06/26/145636.aspx</link><pubDate>Thu, 26 Jun 2008 11:01:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/06/26/145636.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/145636.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/06/26/145636.aspx#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/145636.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/145636.aspx</trackback:ping><description>&lt;P&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;/* &lt;BR&gt;&amp;nbsp;* 可及的速やかに破棄したい&lt;BR&gt;&amp;nbsp;* マネージ対象外リソースを持ったクラスのテンプレ&lt;BR&gt;&amp;nbsp;* C++/CLI版&lt;BR&gt;&amp;nbsp;*/&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;public ref class SampleClass : System::IDisposable {&lt;BR&gt;private:&lt;BR&gt;&amp;nbsp; char* unmanaged_resource; &lt;FONT color=#008000&gt;// マネージ対象外リソース&lt;/FONT&gt;&lt;BR&gt;protected:&lt;BR&gt;&amp;nbsp; bool disposed; &lt;FONT color=#008000&gt;// Dispose()済みならtrue&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000&gt;&amp;nbsp; // Dispose()後にメソッドが呼ばれたときの用心のため、&lt;BR&gt;&amp;nbsp; // 各public/protectedメソッドはその処理に先立ちこいつを呼ぶことを推奨する。&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp; void method() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( disposed ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw gcnew System::ObjectDisposedException(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;this-&amp;gt;GetType()-&amp;gt;ToString(),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"has been disposed.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp; // Dispose()の実処理はココで行う&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp; virtual void Dispose(bool disposing) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( !disposed ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( disposing ) {&lt;BR&gt;&lt;FONT color=#ff0000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // managed-resourceを持っている&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ならここでDispose()&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&lt;FONT color=#ff0000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ここでunmanaged-resourceを廃棄&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delete[] unmanaged_resource;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; disposed = true;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;public:&lt;BR&gt;&lt;FONT color=#008000&gt;&lt;FONT color=#000000&gt;&lt;FONT color=#008000&gt;&amp;nbsp; // コンストラクタ&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp; SampleClass() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unmanaged_resource = new char[100]; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; disposed = false;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; // デストラクタ: Dispose() に相当する。&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp; virtual ~SampleClass() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dispose(true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000&gt; // 後続するFinalize()を抑止する&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System::GC::SuppressFinalize(this);&amp;nbsp;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp; // ファイナライザ: Finalize()に相当する&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp; !SampleClass() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dispose(false);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; }&lt;BR&gt;};&lt;BR&gt;&lt;BR&gt;※ 修正: doDispose → Dispose&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000 size=5&gt;じゃないんだってさ!&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;ref class SampleClass {&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;public:&lt;BR&gt;&amp;nbsp; ~SampleClass() { this-&amp;gt;!SampleClass(); }&lt;BR&gt;&amp;nbsp; !SampleClass() { /* unmanaged-resourceを破棄する */ }&lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;これで十分なんだって。&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/145636.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>雨の日は</title><link>http://blogs.wankuma.com/episteme/archive/2008/06/22/144872.aspx</link><pubDate>Sun, 22 Jun 2008 12:40:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/06/22/144872.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/144872.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/06/22/144872.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/144872.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/144872.aspx</trackback:ping><description>&lt;P&gt;まったりモードでコーディング遊び。&lt;BR&gt;ネタ元 → &lt;U&gt;&lt;FONT color=#800080&gt;mapの使い方教えてください&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;STL/CLRで書いてみた:&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;#include &amp;lt;cliext/map&amp;gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;value class key_type {&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp; System::String^ mesh;&lt;BR&gt;&amp;nbsp; System::String^ error;&lt;BR&gt;&amp;nbsp; static bool operator&amp;lt;(key_type^ x, key_type^ y) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return x-&amp;gt;mesh &amp;lt; y-&amp;gt;mesh ? true : &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( y-&amp;gt;mesh &amp;lt; x-&amp;gt;mesh ? false : x-&amp;gt;error &amp;lt; y-&amp;gt;error );&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;};&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;typedef cliext::map&amp;lt;key_type,int&amp;gt; map_type;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;int main() {&lt;BR&gt;&amp;nbsp; System::String^ str;&lt;BR&gt;&amp;nbsp; key_type key;&lt;BR&gt;&amp;nbsp; map_type ary;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; System::IO::StreamReader &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reader(System::IO::File::OpenRead(L"Data001.txt"));&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; while ( (str = reader.ReadLine()) != nullptr ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( str-&amp;gt;IndexOf(L"メッシュ") == 0 ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; key.mesh = str-&amp;gt;Substring(7,8); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( str-&amp;gt;IndexOf(L"ERROR") == 0 ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; key.error = str-&amp;gt;Substring(6,5);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ary[key]++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; reader.Close();&lt;BR&gt;&amp;nbsp; for each ( map_type::value_type item in ary) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System::Console::WriteLine(L"{0}\t{1}\t{2}件", &lt;BR&gt;　　　　　　item-&amp;gt;first.mesh, item-&amp;gt;first.error, item-&amp;gt;second);&lt;BR&gt;&amp;nbsp; }&amp;nbsp; &lt;BR&gt;&amp;nbsp; return 0;&amp;nbsp; &lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;残念なのはSTL/CLRの cliext::pair がコンテナの要素になれない(きっとバグ)が&lt;BR&gt;ために value class key_type をこしらえてっとこ。&lt;BR&gt;&lt;BR&gt;BCLコレクション: Dictionary 使うとこーなる:&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;value class key_type {&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp; System::String^ mesh;&lt;BR&gt;&amp;nbsp; System::String^ error;&lt;BR&gt;&amp;nbsp; virtual bool Equals(System::Object^ obj) override {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; key_type^ rhs = safe_cast&amp;lt;key_type^&amp;gt;(obj);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return mesh == rhs-&amp;gt;mesh &amp;amp;&amp;amp; error == rhs-&amp;gt;error;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; virtual int GetHashCode() override {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (mesh+error)-&amp;gt;GetHashCode();&lt;BR&gt;&amp;nbsp; } &lt;BR&gt;};&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;typedef System::Collections::Generic::Dictionary&amp;lt;key_type,int&amp;gt; map_type;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;int main() {&lt;BR&gt;&amp;nbsp; System::String^ str;&lt;BR&gt;&amp;nbsp; key_type key;&lt;BR&gt;&amp;nbsp; map_type ary;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; System::IO::StreamReader reader(System::IO::File::OpenRead(L"Data001.txt"));&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; while ( (str = reader.ReadLine()) != nullptr ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( str-&amp;gt;IndexOf(L"メッシュ") == 0 ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; key.mesh = str-&amp;gt;Substring(7,8); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( str-&amp;gt;IndexOf(L"ERROR") == 0 ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; key.error = str-&amp;gt;Substring(6,5);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;/* [※] きもちわりー */&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( ary.ContainsKey(key) ) ary[key]++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else ary.Add(key,1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; reader.Close();&lt;BR&gt;&amp;nbsp; for each ( System::Collections::Generic::KeyValuePair&amp;lt;key_type,int&amp;gt;^ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;item in ary) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System::Console::WriteLine(L"{0}\t{1}\t{2}件", &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item-&amp;gt;Key.mesh, item-&amp;gt;Key.error, item-&amp;gt;Value);&lt;BR&gt;&amp;nbsp; }&amp;nbsp; &lt;BR&gt;&amp;nbsp; return 0;&amp;nbsp; &lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;[※] ここがちょいと気になるところ。ContainsKeyによって登録済みかを&lt;BR&gt;判定し、登録されてたら ary[key]++ してる。そのときも要素の検索が&lt;BR&gt;行われるので、都合二回の検索が行われてることになります。&lt;BR&gt;それは無駄ぢゃーんってんで&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; try { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ary[key]++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch ( System::Collections::Generic::KeyNotFoundException^&amp;nbsp; ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ary.Add(key,1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; &lt;BR&gt;正常処理に例外使うのもどーかと。C++屋のアタマでは例外処理は&lt;BR&gt;コストが高く、検索二回の方がまだマシかも...とか思っちゃうです。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/144872.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>