Bre*_*ett 5 c++ dictionary vector objective-c
我有一个C++
类型的变量,std::vector<std::bitset<128> >
它被定义并填充在一个C++
类中(从我的Objective-C++
类中调用).
我想将这个对象存储在NSDictionary
- 或某些等价物中.我显然不能简单地添加std::vector<std::bitset<128> >
到NSDictionary,因为它不是类型id
.
所以我的问题是:我怎样才能实现相同的概念?如何std::vector<std::bitset<128> >
在各种字典中存储?
我能id
以某种方式将矢量对象包装在一个类型中吗?即使它不是直接字典,我还能使用另一种方法吗?我还需要它是可变的,所以我可以在运行时添加键/对象.
我看过了std::map<std::string, std::string>
,但我不确定这是不是我要找的东西.我也没有发现任何可变的例子.
有谁知道如何实现这一目标?
实际上NSValue
似乎是解决方案.@ Taum的建议对于某些情况是正确的(当你将对象存储在某处并确保你的指针正在工作时).如果你创建了一些对象并且它的生命周期有限,但你需要进一步推动这个对象,请使用另一种NSValue
方法
std::vector<std::bitset<128>> cppVector;
NSValue *value=[NSValue valueWithBytes:&cppVector objCType:@encode(std::vector<std::bitset<128>>)];
Run Code Online (Sandbox Code Playgroud)
当您需要获取此值时:
std::vector<std::bitset<128>> cppVector;
[value getValue:&cppVector];
Run Code Online (Sandbox Code Playgroud)
这也适用于简单的结构.
您可以将指向它的指针存储在NSValue
对象中。您只需要注意什么拥有它std::vector
以及何时应该拥有free
它。
存储:
std::vector<std::bitset<128>> *cppVector = myCppObject->methodReturningVector();
NSValue *value = [NSValue valueWithPointer:cppVector];
[myObjcDictionary setObject:value forKey:@"myKey"];
Run Code Online (Sandbox Code Playgroud)
使用以下命令取回 C++ 对象:
NSValue *value = [myObjcDictionary objectForKey:@"myKey"];
std::vector<std::bitset<128>> *cppVector = [value pointerValue]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1605 次 |
最近记录: |