<?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>STL/CLR</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/category/632.aspx</link><description>STL/CLR</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/ｅｐｉｓｔｅｍｅ/archive/2008/07/24/150088.aspx</link><pubDate>Thu, 24 Jul 2008 16:42:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/24/150088.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/150088.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/24/150088.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/150088.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/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/ｅｐｉｓｔｅｍｅ/aggbug/150088.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>あるもーん♪</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/18/149647.aspx</link><pubDate>Fri, 18 Jul 2008 23:05:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/18/149647.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/149647.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/18/149647.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/149647.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/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/ｅｐｉｓｔｅｍｅ/aggbug/149647.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>暗いｼﾞﾒｼﾞﾒしたとこのご紹介</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/07/147801.aspx</link><pubDate>Mon, 07 Jul 2008 20:08:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/07/147801.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/147801.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/07/07/147801.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/147801.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/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/ｅｐｉｓｔｅｍｅ/aggbug/147801.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>雨の日は</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/06/22/144872.aspx</link><pubDate>Sun, 22 Jun 2008 12:40:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/06/22/144872.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/144872.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/06/22/144872.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/144872.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/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/ｅｐｉｓｔｅｍｅ/aggbug/144872.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>C++フェチがSTL/CLRネタにC++/CLIで遊ぶ</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/05/26/139432.aspx</link><pubDate>Mon, 26 May 2008 14:42:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/05/26/139432.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/139432.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/05/26/139432.aspx#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/139432.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/139432.aspx</trackback:ping><description>&lt;P&gt;ネタ元 → &lt;A id=RecentPosts__ctl13_Hyperlink2 HREF="/esten/archive/2008/05/26/139355.aspx"&gt;&lt;FONT color=#0000ff&gt;LINQ は面白い(って、わたし、この子ﾘﾝｷｭｰって呼んじゃうのよね、ついｗ）&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;BR&gt;Sub &lt;/SPAN&gt;Main()&lt;BR&gt;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"今日作ったファイル"&lt;/SPAN&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;Dim &lt;/SPAN&gt;Files = &lt;SPAN style="COLOR: blue"&gt;From &lt;/SPAN&gt;file &lt;SPAN style="COLOR: blue"&gt;In &lt;/SPAN&gt;Directory.GetFiles(&lt;SPAN style="COLOR: #a31515"&gt;"c:\wankuma"&lt;/SPAN&gt;) _&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Where &lt;/SPAN&gt;System.IO.File.GetCreationTime(file).ToString(&lt;SPAN style="COLOR: #a31515"&gt;"yyyyMMdd"&lt;/SPAN&gt;)&amp;nbsp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;SPAN style="COLOR: blue"&gt;Date&lt;/SPAN&gt;.Today.ToString(&lt;SPAN style="COLOR: #a31515"&gt;"yyyyMMdd"&lt;/SPAN&gt;) _&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Order By &lt;/SPAN&gt;(file) _&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Select &lt;/SPAN&gt;file&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;For Each &lt;/SPAN&gt;Todays &lt;SPAN style="COLOR: blue"&gt;In &lt;/SPAN&gt;Files&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(Todays)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT face="Courier New" size=2&gt;Next&lt;BR&gt;End Sub&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#000000&gt;ほほぉ、なるほど。&lt;BR&gt;LINQを持ち合わせていない C++/CLI と STL/CLR でなんとかしてみる:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;value class different_date {&lt;BR&gt;&amp;nbsp; static String^ today = &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DateTime::Now.ToString(L&lt;FONT color=#ff1493&gt;"yyyyMMdd"&lt;/FONT&gt;&lt;FONT color=#000000&gt;);&lt;/FONT&gt;&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp; static bool exec(String^ file) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return File::GetCreationTime(file).ToString(L&lt;FONT color=#ff1493&gt;"yyyyMMdd")&lt;/FONT&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; != today;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;};&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;int main() {&lt;BR&gt;&amp;nbsp; Console::WriteLine(L&lt;FONT color=#ff1493&gt;"今日作ったファイル");&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; &lt;FONT color=#008000&gt;//&amp;nbsp;ファイル名集合から&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; cliext::vector&amp;lt;String^&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; files(Directory::GetFiles(L&lt;FONT color=#ff1493&gt;"D:\\Program Files\\Work"&lt;/FONT&gt;));&lt;BR&gt;&amp;nbsp; &lt;FONT color=#008000&gt;// 条件を満たさないものを取り除き&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; files.erase(cliext::remove_if(files.begin(), files.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; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;gcnew Predicate&amp;lt;String^&amp;gt;(different_month::exec)),&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;files.end());&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp; // ソートして&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; cliext::sort(files.begin(), files.end());&lt;BR&gt;&amp;nbsp; &lt;FONT color=#008000&gt;// 出力する&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; for each ( String^ item in files ) Console::WriteLine(item);&lt;BR&gt;}&lt;BR&gt;&lt;FONT face=Arial size=3&gt;&lt;BR&gt;...努力は認めてくださいまし。LINQはすげーですやっぱ。&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/139432.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>おにょれ赤坂</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/05/23/139034.aspx</link><pubDate>Fri, 23 May 2008 09:21:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/05/23/139034.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/139034.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/05/23/139034.aspx#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/139034.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/139034.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://codezine.jp/a/article/aid/2474.aspx"&gt;C++/CLIのSTL/CLR オブジェクトにC#からアクセスする方法&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;...してやられました。 僕も書こうとせっせとネタかき集めておったのに。&lt;BR&gt;書かれちまったもんはしゃぁない、タダでさえ陽の当たらぬSTL/CLRの&lt;BR&gt;さらに暗いｼﾞﾒｼﾞﾒしたとこのご紹介でも企むことにしますか。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/139034.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>ヒープソート</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/02/24/124619.aspx</link><pubDate>Sun, 24 Feb 2008 11:22:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/02/24/124619.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/124619.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/02/24/124619.aspx#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/124619.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/124619.aspx</trackback:ping><description>&lt;P&gt;ネタ元 → わんくま東京勉強会懇親会&lt;BR&gt;&lt;BR&gt;Rの発言:&lt;BR&gt;「ソートする時にさ、はじめにいっぺんデータを頭からなめて&lt;BR&gt;偏り具合とかバラつき具合を調べておいて、最良のソートアルゴリズムを&lt;BR&gt;選んで...」&lt;/P&gt;
&lt;P&gt;これに周りのやつらが噛みつく:&lt;BR&gt;「そんなもん、データ読み込むたんびにソートしとけば全部読み終わった&lt;BR&gt;ときゃソート終わってんぢゃん」&lt;BR&gt;R少なからず凹んだ様子。&lt;BR&gt;&lt;BR&gt;"データ読み込むたんびにソート"の代表的な例が binary-tree や B-tree です。&lt;BR&gt;が、もひとつ &lt;STRONG&gt;heap&lt;/STRONG&gt; てーのがあります。heap だとデータ読み込むたんびに&lt;BR&gt;半分ソートした状態を作ります。なんたらtree と違い、枝のポインタ(参照)&lt;BR&gt;を必要としないのでコンパクトなのが売り。&lt;BR&gt;&lt;BR&gt;indexを1から始めた可変長配列を用意します。&lt;BR&gt;この配列 array[] に格納された要素は:&lt;BR&gt;array[i] を親、array[i*2] と array[i*2+1] を子としたとき、&lt;BR&gt;任意の親に対し、その二人の子より小さくない。&lt;BR&gt;&lt;BR&gt;つまり &lt;BR&gt;array[1] はその子: array[2],array[3]&amp;nbsp;以上、&lt;BR&gt;array[2] はその子: array[4],array[5]&amp;nbsp;以上、&lt;BR&gt;array[3] はその子: array[6],array[7]&amp;nbsp;以上、&lt;BR&gt;array[4] はその子: array[8],array[9]&amp;nbsp;以上、&lt;BR&gt;...&amp;nbsp;てことになり、&amp;nbsp;つまるところ先頭要素 array[1] が最大要素となります。&lt;BR&gt;この状態をヒープ状態と呼びましょう。&lt;BR&gt;N-1個の要素が詰まったヒープに要素を追加するには:&lt;BR&gt;- 末端に array[N] を追加する。&lt;BR&gt;- array[N]の親array[N/2]と比較し、親&amp;lt;=子だったら入れ替える&lt;BR&gt;- 親子を入れ替えちゃったらさらにその上位の親子の大小関係が狂う&lt;BR&gt;　かもしれないので同様に比較/交換する。&lt;BR&gt;　親子の交換が起こらなくなるまで繰り返す。&lt;BR&gt;この処理は多くともlog2(N)の回数で終了します。&lt;BR&gt;&lt;BR&gt;これを繰り返し、全要素を突っ込んだところで&lt;BR&gt;ヒープ状態:"半分ソートされた状態"ができあがります。&lt;/P&gt;
&lt;P&gt;ではソート。先頭要素が一番大きいことがわかってます。&lt;BR&gt;こいつを取り出し、代わりに末端要素を入れちゃいます。&lt;BR&gt;そうすると親子の大小関係が変化します。&lt;BR&gt;自分と二人の子を比べ、一番大きいやつを新たな親として親子を入れ替えます。&lt;BR&gt;そーすっと入れ替わった子と、さらにその子たちとのあいだで大小関係が狂うかも。&lt;BR&gt;なので同様の処理を繰り返し、親子の交換が起こらなくなったら終了、&lt;BR&gt;ヒープ状態が維持されます。&lt;BR&gt;ほんでもって、再び先頭要素を取り出して...配列が空になるまで繰り返します。&lt;BR&gt;&lt;BR&gt;要するに要素の大きな順で取り出すことができてます。ほらソートできた。&lt;BR&gt;&lt;BR&gt;STL/CLRでこの様子を再現してみた。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;#include &amp;lt;cliext/algorithm&amp;gt;&lt;BR&gt;#include &amp;lt;cliext/vector&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;using namespace System;&lt;BR&gt;using namespace cliext;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;int main() {&lt;BR&gt;&amp;nbsp; Random r;&lt;BR&gt;&amp;nbsp; vector&amp;lt;int&amp;gt; v;&lt;BR&gt;&amp;nbsp; Console::WriteLine("前半");&lt;BR&gt;&amp;nbsp; for ( int i = 0; i &amp;lt; 10; ++i) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n = r.Next(10,50);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::Write("{0} -- ", n);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; v.push_back(n);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;push_heap&lt;/FONT&gt;&lt;/STRONG&gt;(v.begin(), v.end());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for each ( int item in v ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::Write("{0} ", item);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::WriteLine();&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; Console::WriteLine("後半");&lt;BR&gt;&amp;nbsp; for ( int i = 0; i &amp;lt; 10; ++i ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n = v.front();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::Write("{0} -- ", n);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#ff0000&gt;pop_heap&lt;/FONT&gt;(v.begin(), v.end());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; v.pop_back();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for each ( int item in v ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::Write("{0} ", item);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console::WriteLine();&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;---- 実行結果 ----&lt;BR&gt;&lt;FONT face="Courier New"&gt;前半&lt;BR&gt;18 -- 18&lt;BR&gt;19 -- 19 18&lt;BR&gt;11 -- 19 18 11&lt;BR&gt;13 -- 19 18 11 13&lt;BR&gt;12 -- 19 18 11 13 12&lt;BR&gt;47 -- 47 18 19 13 12 11&lt;BR&gt;39 -- 47 18 39 13 12 11 19&lt;BR&gt;14 -- 47 18 39 14 12 11 19 13&lt;BR&gt;41 -- 47 41 39 18 12 11 19 13 14&lt;BR&gt;26 -- 47 41 39 18 26 11 19 13 14 12&lt;BR&gt;後半&lt;BR&gt;47 -- 41 26 39 18 12 11 19 13 14&lt;BR&gt;41 -- 39 26 19 18 12 11 14 13&lt;BR&gt;39 -- 26 18 19 13 12 11 14&lt;BR&gt;26 -- 19 18 14 13 12 11&lt;BR&gt;19 -- 18 13 14 11 12&lt;BR&gt;18 -- 14 13 12 11&lt;BR&gt;14 -- 13 11 12&lt;BR&gt;13 -- 12 11&lt;BR&gt;12 -- 11&lt;BR&gt;11 --&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/124619.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>ちょっとばかしヘンな仕様</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/02/22/124530.aspx</link><pubDate>Fri, 22 Feb 2008 23:42:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/02/22/124530.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/124530.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2008/02/22/124530.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/124530.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/124530.aspx</trackback:ping><description>&lt;P&gt;ネタ元 → &lt;A href="http://bbs.wankuma.com/index.cgi?mode=al2&amp;amp;namber=14571"&gt;hash_mapの使い方&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;そーなの、VC++についてくるhash_set, hash_map の類はインタフェースがちょっとばかし特殊。&lt;/P&gt;
&lt;P&gt;そのワケはシノニムの扱いなのです。&lt;BR&gt;同じハッシュ値をとる要素の群をシノニムってゆーです。&lt;BR&gt;ハッシュ表はハッシュ値が同じシノニムの集合を扱わにゃならん。&lt;BR&gt;&lt;BR&gt;STLportのhash_xxx実装ではシノニム集合を(配列/リンクリストなどの)リニアな&lt;BR&gt;コンテナに納め、リニアサーチで要素を特定します。比較オブジェクトは&lt;BR&gt;等値比較ができればいい。&lt;BR&gt;&lt;BR&gt;対してDinkumwareのOEMであるVC++の標準C++ライブラリではhash_xxx名部&lt;BR&gt;のシノニムを二進木に格納し、バイナリサーチで目的の要素を特定します。&lt;BR&gt;なので比較オブジェクトには要素の大小を知れるものを与えるです。&lt;BR&gt;&lt;BR&gt;STL/CLRの cliext::hash_xxx インタフェースはそれを引きずったカタチになってんですね。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/124530.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>またしても不安な Visual Studio 2008</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2007/11/24/109984.aspx</link><pubDate>Sat, 24 Nov 2007 18:04:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2007/11/24/109984.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/109984.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2007/11/24/109984.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/109984.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/109984.aspx</trackback:ping><description>引き続きまして → &lt;A id=_e56b1e6f2161efb0_HomePageDays_DaysList__ctl2_DayItem_DayList__ctl1_TitleUrl HREF="/episteme/archive/2007/11/21/109646.aspx"&gt;&lt;FONT color=#0000ff&gt;もすぬごく不安な Visual Studio 2008&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;いまさら感たっぷりにこんなのも見つけた。&lt;BR&gt;
&lt;P align=left&gt;&lt;FONT face="Courier New" size=2&gt;#include &amp;lt;cliext/set&amp;gt;&lt;BR&gt;#include &amp;lt;cliext/utility&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT face="Courier New" size=2&gt;using namespace System;&lt;BR&gt;using namespace cliext;&lt;BR&gt;&lt;BR&gt;template&amp;lt;typename Iterator&amp;gt;&lt;BR&gt;void print(cliext::pair&amp;lt;Iterator,Iterator&amp;gt; p);&lt;BR&gt;&lt;BR&gt;int main() {&lt;BR&gt;&amp;nbsp; typedef multiset&amp;lt;int&amp;gt; myset;&lt;BR&gt;&amp;nbsp; myset s;&lt;BR&gt;&amp;nbsp; pair&amp;lt;myset::iterator,myset::iterator&amp;gt; p = s.equal_range(2);&lt;BR&gt;&amp;nbsp; print(p); //&amp;nbsp;一旦pairで受ければ問題ないけど&lt;BR&gt;&amp;nbsp; print(s.equal_range(2)); // 直接食わすと↓こんな&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;ERROR&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#339966 size=2&gt;/*&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;&lt;FONT color=#339966&gt;void print(cliext::pair&amp;lt;Iterator,Iterator&amp;gt;)' : could not deduce template argument for '&lt;FONT color=#0000ff&gt;cliext::pair&amp;lt;Iterator,Iterator&amp;gt;&lt;/FONT&gt;' from &lt;FONT color=#0000ff&gt;'Microsoft::VisualC::StlClr::GenericPair&amp;lt;TValue1,TValue2&amp;gt;&lt;/FONT&gt;'&lt;BR&gt;*/&lt;BR&gt;&lt;/FONT&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;A href="http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2452063&amp;amp;SiteID=7"&gt;MDSN-forum(JP)&lt;/A&gt; と &lt;A href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=311994&amp;amp;wa=wsignin1.0"&gt;Connect&lt;/A&gt; にチクり済み。&lt;BR&gt;Connect には&lt;BR&gt;　Thanks for your feedback. We are escalating this issue to the appropriate group within &lt;BR&gt;　the Visual Studio Product Team for triage and resolution. &lt;BR&gt;　These specialized experts will follow-up with your issue.&lt;BR&gt;とのお返事を貰えた。よしよし。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/109984.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>もすぬごく不安な Visual Studio 2008</title><link>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2007/11/21/109646.aspx</link><pubDate>Wed, 21 Nov 2007 15:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2007/11/21/109646.aspx</guid><wfw:comment>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/109646.aspx</wfw:comment><comments>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/archive/2007/11/21/109646.aspx#Feedback</comments><slash:comments>25</slash:comments><wfw:commentRss>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/comments/commentRss/109646.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/services/trackbacks/109646.aspx</trackback:ping><description>&lt;P&gt;RTM版が上がってたので早速試してみた。&lt;/P&gt;
&lt;P&gt;β2でエラーになったコード:&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;#include ＜cliext/utility＞&lt;BR&gt;#include ＜cliext/vector＞&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;int main() {&lt;BR&gt;&amp;nbsp; typedef cliext::pair＜int,int＞ point;&lt;BR&gt;&amp;nbsp; cliext::vector＜point^＞ pv;&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;こいつをコンパイルした.... &lt;STRONG&gt;&lt;FONT color=#ff0000 size=5&gt;直ってないやん!&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;たったこんだけのコードでエラーになるようだとSTL/CLRまるごと不安になっちまうのですよ。&lt;BR&gt;βの頃、とっくにバグレポート投げ済みなのよ。&lt;BR&gt;&lt;A href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=301047"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=301047&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;MSDN-forum(J)でも放置されちまったし。ぷんすか。&lt;BR&gt;&lt;A href="http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2113915&amp;amp;SiteID=7"&gt;http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2113915&amp;amp;SiteID=7&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;ActiveのまんまRTMに突入ｶﾖｰ リリース早々ServicePackのつもりか?&lt;BR&gt;ServicePackが出ればまだマシなんやが、STL/CLRなんざマイナーだから&lt;BR&gt;放置プレイなんてことになんじゃないかしら。 &lt;STRONG&gt;勘弁してくれや&lt;/STRONG&gt;ほんまにもー&lt;BR&gt;&lt;BR&gt;[追記] ついでに list, deque, set, multiset, map, multimap および array についてやってみた。&lt;BR&gt;通ってくれたのはmap, multimap, array の三つのみ。&lt;STRONG&gt;おーまいがー&lt;/STRONG&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/ｅｐｉｓｔｅｍｅ/aggbug/109646.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>