stl/clr .net 化された標準 c++ ライブラリ

7
STL/CLR .NET 化化化化化化 C++ 化化化化化 化化化化化化 επιστημη Microsoft MVP, Visual Developer, Visual C++

Upload: havyn

Post on 05-Jan-2016

62 views

Category:

Documents


0 download

DESCRIPTION

STL/CLR .NET 化された標準 C++ ライブラリ. わんくま同盟 επιστημη Microsoft MVP, Visual Developer, Visual C++. STL.NET 入門 Stanley B. Lippman Architect, Microsoft Visual C++ team August 2004 日本語版最終更新日 2005 年 6 月 6 日 適用対象 : Microsoft Visual C++ 2005 この記事は、 STL.NET についての 連載記事の第 1 回となります 。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: STL/CLR .NET 化された標準 C++ ライブラリ

STL/CLR.NET 化された標準 C++ ライブラ

リわんくま同盟

επιστημη Microsoft MVP, Visual Developer, Visual C++

Page 2: STL/CLR .NET 化された標準 C++ ライブラリ

STL.NET 入門Stanley B. LippmanArchitect, Microsoft Visual C++ teamAugust 2004日本語版最終更新日 2005 年 6 月 6 日適用対象 :Microsoft Visual C++ 2005

この記事は、 STL.NET についての連載記事の第 1 回となります。STL.NET は標準テンプレート ライブラリ (STL) を再設計したもので、CLI のジェネリックと C++ のテンプレートの両方のメカニズムを使って実装されています。STL.NET は、 Visual C++ の新機能として Visual Studio 2005 に導入されます。………

2 回目以降はナシのつぶて orz

コトの起こりは MSDN

されてませんっ !

Page 3: STL/CLR .NET 化された標準 C++ ライブラリ

STL.NET → STL/CLR と名を変えて Orcas で提供

      CTP(Community Technical Preview) から拾えます

-ヘッダファイル群 include/cliext/… - ライブラリ ( アセンブリ ) Microsoft.VisualC.STLCLR.dll

※ 上記ふたつを抜き出せば VC++ 2005 でも使えます♪ ←ただし無保証 ^^;

Page 4: STL/CLR .NET 化された標準 C++ ライブラリ

STL/CLR は…- Managed を要素とする Managed なコンテナ群- 標準 C++ コンテナとコンパチ- template で実装generics じゃないので、 C#/VB.NET からは ( 直接には ) 使えません

Page 5: STL/CLR .NET 化された標準 C++ ライブラリ

クラス 概要 .NET generic コンテナ

vector<T> 可変長配列 List<T>

list<T> 双方向リスト LinkedList<T>

deque<T> 両端キュー

stack<T> スタック (FILO) Stack<T>

queue<T> キュー (FIFO) Queue<T>

set <T>/ multiset<T> 2 分木による集合

map<K,V> / multimap<K,V> 2 分木による辞書 SortedDictionary<K,V>

hash_set <T>/ hash_multiset<T> ハッシュ表による集合

hash_map<K,V> / hash_multimap<K,V> ハッシュ表による辞書

Dictionary<K,V>※ いわゆる STL とコンパチ  , 名前空間 cliext

Page 6: STL/CLR .NET 化された標準 C++ ライブラリ

#include <cliext/algorithm>#include <cliext/vector>

int main() {

typedef cliext::vector<int> container; container iv; for ( int i = 0; i < 40; ++i ) { iv.push_back(i%10); }

for ( container::iterator first = iv.begin(); first != iv.end(); ++first ) { cliext::iter_swap(first, cliext::max_element(first, iv.end())); }

for each ( int n in iv ) { System::Console::Write("{0} ",n); } System::Console::WriteLine();

}

Sample: 単純選択ソート

コンテナは Icollection( つまり IEnumerable) なので for each できる !

Page 7: STL/CLR .NET 化された標準 C++ ライブラリ

STL ないとコード書けないよぉ  T-T

できるだけ書き換えたくありまっしぇん !

generic programming 萌え♪

...そんなあなたに STL/CLR