0

C++ ライブラリに NSData、NSDictionary、および NSArray に相当するものがあるかどうか疑問に思っていました。ない場合、これらのクラスを提供する既知の一般的なフレームワークはありますか?

よろしく

4

3 に答える 3

4

これらを参照してください。

NSArray:ベクトル

NSDictionary:マップ

于 2012-05-13T17:06:45.477 に答える
3

これらのクラスの機能は言語によって大幅に管理されているため、そうではありません。

一方、std::vector (配列とデータ) と std::map (辞書) があります。これらはまったく同等ではありませんが、同様の目的を果たします。

于 2012-05-13T17:06:12.887 に答える
1

STL には、NSDictionary の代わりに使用できるマップと、NSArray の代わりに使用できるベクトルがありますが、特定の機能が欠落しており、さらにコーディングが必要になる可能性があるため、もちろん「変換」は簡単ではありません。dictionaryWithContentsOfURL:たとえば、NSDictionaryのセレクターを「エミュレート」するには、C++ で追加のコーディングを行い、URL を解析し、リモート リソースの場合は接続して取得し、データを非シリアル化する必要があります。もちろん、他のライブラリが役立つかもしれませんが(ブースト?)、要点は、NSDictionary(およびその他)のいくつかの特別な機能を移植する必要がある場合は、より多くのコードを記述する必要があるということです。

一方、基本的な辞書と配列機能だけを使用すると、「変換」はかなり簡単になります。

によって「エミュレート」される可能性がある NSData の同様の引数std::stringbuf

GNUstepライブラリも使用できます。GNUstep は GNU オープン Cocoa フレームワークであり、Cocoa に関するほとんどすべて (AppKit および Foundation クラス) を提供します。GNUstep は Apple Mac OS X 以外のプラットフォーム用に存在するため、これらのプラットフォームに Cocoa アプリを移植できます。Objective-C++ を使用すると、STL と Cocoa/GNUstep フレームワークの両方を使用でき、2 つの世界の長所を活用できます (OO プログラミングと、異なる「起源」のクラス/オブジェクト間の「相互作用」に制限があります)。このような混合を試みましたが、注意を払うことでいくつかの利点が得られる可能性があります.

于 2012-05-13T17:41:07.393 に答える