私はObjective-CからC++に移行しており、どのようなベクトルがわからないのですか?私はそれらについてのドキュメントを読んだが、私はかなり明確ではない。 Objective-Cの類義語を使ってC++ベクタを説明しますか?Objective-CではC++ベクタは何と関係していますか?
答えて
これらはかなりNSMutableArrays
に似ていますが、vector
はテンプレートクラスであり、任意の(標準テンプレートライブラリ互換)タイプのインスタンス化が可能です。 NSArrays
は常にNSObjects
を保持します。
つまり、std::vector
を意味すると仮定します。
NSMutableArraysと似ていますが、ポインタはデータ型を保持することも、ポインタを保持することもできません。しかし、各ベクトルは一度に1つのタイプしか保持できません。また、C++のように関数が少なくなっています。 plistの読み書きはありません。それは(テンプレートパラメータである、例えばstd::vector<int>
はint
Sを保持している)したい任意の型を保持している以外
A C++ベクトルは(おそらくあなたがstd::vector
のようなものを意味する)、基本的にNSArray
です。もちろん、メモリ管理は行われません(NSArray
)。これは、任意の型が保持カウントされないためです。したがって、例えばstd::vector<id>
はかなり不適切です(Obj-C++を想定)。
高度な配列としてベクトルを考えます。
あなたがC++に慣れていない場合、このページはあなたの親友のようになります http://www.cplusplus.com/reference/stl/vector/
にNSArrayはCFArrayのラッパーです。 CFArrayは任意のデータ型を格納できます。
私はC++についてよく分かりませんが、CFArrayはベクターを使用するすべてのことを行うことができますか? CFArrayを作成するときは、CFArrayCallBacksポインタを与えます。このポインタには、格納されるデータ型に固有のロジックが含まれています。
もちろん、Obj-Cファイルの名前を* .mmに変更し、C++を目的に合わせて使用することもできます。 Cにおいて
++配列は、基本的には、データの連続ブロックへのポインタだけ---一連の要素です。それは組み込みのメソッド、またはより高い機能性を提供しません。
int intArr[] = {0,1,2,3};
ベクトル(スタンダード::ベクトル)
int *intArr = (int *)malloc(4*sizeof(int));
for(int i = 0; i < 4; i++) { intArr[i] = i; }
同じである一方、また、方法に内蔵された付加的なサービスを提供しています(基本的にアレイのような)要素のための容器であります(参照:http://www.cplusplus.com/reference/stl/vector/)よう
vector<int> intArr;
for(int i = 0; i < 4; i++) { intArr.push_back(i); }
// this yields the same content; i.e. intArr = {0,1,2,3}
両方として配列およびベクターオブジェクトの任意のタイプで使用することができ、INT、二重、「MySpacePirateWizardClass」等のベクターのビッグボーナスが追加functionalitありますyのような組み込み関数から:
int arrSize = intArr.size(); // vector also includes useful information
int *firstElement = intArr.begin(); // methods for creating pointers to elements
intArr.delete(0); // modify elements
intArr.insert(0, 2); // modify vector
// now: intArr = {2,1,2,3}
など
スペースが足りない(または膨大な量のデータを見る)のではないことが分かっているとき、私はいつもベクターを使います。 )。
- 1. GCCとPythonインタプリタとは何が関係していますか?
- 2. 最近、ヘルプファイルとは何が関係していますか?
- 3. bower 1.0:.bower.jsonとは何が関係していますか?
- 4. stacktrace.jsの数値とは何が関係していますか?
- 5. Spring Boot - マイクロサービスとは何が関係していますか?
- 6. 関数型プログラミングとマルコフ連鎖は何とか関係していますか?
- 7. gulp.jsとは何ですか、それはnpmに関係しています
- 8. XML名前空間とは何ですか?また、Springトランザクションとは何が関係していますか?
- 9. Yii2:関係名とは何ですか?
- 10. Scalaの言語はScalaScriptと何らかの形で関係しています
- 11. ベクタのプライベートステータスを変更しないでクラスのベクタ内の関数にアクセスしようとしています
- 12. IS-A関係とHAS-A関係の違いは何ですか? Java
- 13. 友人関係はC++で継承されていますか?
- 14. "カーネルコール"と "システムコール"という用語の関係は何ですか?
- 15. ng buildとngcの関係と違いは何ですか
- 16. Laravelで直接関係にアクセスしてwithとの違いは何ですか?
- 17. iOS:色域はUIStackViewの軸と何が関係していますか?
- 18. ブレンドとは? WPFとの関係は何ですか?
- 19. 新しいscrum tfs2010ではSBTとSprintの関係は何ですか?
- 20. m-m関係のmappedByとbelongsToの違いは何ですか?
- 21. Neo4jとSQLの関係の違いは何ですか?
- 22. エクステントとアロケーションユニットの違い/関係は何ですか?
- 23. mpirun、mpiexec、mpiexec.hydraの違いと関係は何ですか?
- 24. Mavenのリポジトリと依存関係の違いは何ですか?
- 25. EnumとEnumerationの関係は何か
- 26. MyISAMテーブルのphpMyAdminでは "内部関係"とは何ですか?
- 27. Angular2/SystemJSでは、systemjs.config.jsと.import()の関係は何ですか?
- 28. phpのclassとcall_user_func()関数の関係は何ですか?
- 29. Android - プロセスと通知の関係は何ですか?私はアンドロイドでの通知やプロセス間の関係を理解しようとしています
- 30. Rails3 - テスト - 関係エラーとは何ですか?無効ですか?
'std :: vector'は実際にあなたのためにメモリ管理を行います(これは' std :: vector'の全体のポイントです)。私はあなたが意図したことは 'std :: vector'は 'int *'の各要素に対して 'delete'を呼び出さず、その要素の参照カウントもしないということです。スマートポインタを使用して参照カウントサポートを追加することができます。 'std :: vector >'である。 –
@Insilico:Obj-C用語では、「メモリ管理」はObj-Cオブジェクトの参照カウントを意味します。 –