1
NSMutableArrayの内容をstd :: vectorに変換することはできますか?もしそうなら、これはObjective-CまたはC++コードで行うべきでしょうか?NSMutableArrayからstd :: vector
NSMutableArrayの内容をstd :: vectorに変換することはできますか?もしそうなら、これはObjective-CまたはC++コードで行うべきでしょうか?NSMutableArrayからstd :: vector
Objective-Cタイプのベクターを作成できます。
ベクターにNSStringのインスタンスを格納するためにたとえば、あなたは、次のコードを使用することができますが:
NSMutableArray<NSString*>* array = [@[@"1", @"2"] mutableCopy];
__block std::vector<NSString*> vectorList;
[array enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
vectorList.push_back(obj);
}];
for (std::vector<NSString*>::const_iterator iterator = vectorList.cbegin(); iterator != vectorList.cend(); iterator++)
{
NSLog(@"%@", *iterator);
}
C++はObjective-Cのミリメートルで(ファイルの構文を持っていないので、あなたは、Objective-Cの++ファイルでそれを使用する必要があります拡張)。
NSMutableArray内のデータを別の表現(NSNumberをint、NSStringをstd :: stringなど)に変換する必要がある場合は、手動で作成する必要があります。
はい可能です。 mutable配列の各項目に対して、voidポインタへのブリッジキャストを使用して、それを 'std :: vector'に格納します。例:https://stackoverflow.com/questions/7298912/convert-nsdictionary-to-stdvector?rq=1もちろんObjective-C++ .mmファイルで行う必要があります。 – Brandon
ありがとうございます。あなたのコメントは私を始められるようにしてくれました。 – Pibomb
@Brandon、申し訳ありませんが、Objective-C++のテンプレートを使用して、Objective-Cタイプの仕様を作成したり、指定したりすることができます。たとえば、std :: set、std :: vector <__ weak NSObject *>などです。 2番目のコンテナには弱い参照が格納されます。 –