2017-06-18 3 views
1

NSMutableArrayの内容をstd :: vectorに変換することはできますか?もしそうなら、これはObjective-CまたはC++コードで行うべきでしょうか?NSMutableArrayからstd :: vector

+0

はい可能です。 mutable配列の各項目に対して、voidポインタへのブリッジキャストを使用して、それを 'std :: vector'に格納します。例:https://stackoverflow.com/questions/7298912/convert-nsdictionary-to-stdvector?rq=1もちろんObjective-C++ .mmファイルで行う必要があります。 – Brandon

+0

ありがとうございます。あなたのコメントは私を始められるようにしてくれました。 – Pibomb

+0

@Brandon、申し訳ありませんが、Objective-C++のテンプレートを使用して、Objective-Cタイプの仕様を作成したり、指定したりすることができます。たとえば、std :: set 、std :: vector <__ weak NSObject *>などです。 2番目のコンテナには弱い参照が格納されます。 –

答えて

1

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など)に変換する必要がある場合は、手動で作成する必要があります。

関連する問題