c++ - 在哪里可以找到 NSOrderedSet( Objective-C )源代码?按照 C++ 中的插入顺序从 SET 中读取元素?

标签 c++ objective-c set

是否有可能根据将这些元素插入 SET(在 C++ 中)的顺序从 SET(在 C++ 中,即 std::set)中读取元素? 我本可以使用 Vector 或列表按插入顺序进行阅读。但我希望插入、搜索等在 O(log(n)) 中完成。必须使用 SET,我无法更改它。

使用额外的内存来存储元素 id 或插入序列号等将需要大量内存。这种解决方案对我没有帮助

我读过一些在 Objective-C 中,NSOrderedSet 提供这种功能的地方(我不知道 Objective-C,NSOrderedSet)。用C++可以实现类似的功能吗?

Edit1:NSOrderedSet 源代码可用吗?如果可用,我在哪里可以找到?

最佳答案

您可以使用 std::map 和您的对象的键,并为 map 中的插入顺序赋值(参见下面的示例):

std::map<yourObj, std::size_t> M;
...
M.insert(std::make_pair(yourObj, M.size() + 1));

通过这种方式,您可以保留在 O(log(n)) 要求中完成的插入、搜索等操作。

关于c++ - 在哪里可以找到 NSOrderedSet( Objective-C )源代码?按照 C++ 中的插入顺序从 SET 中读取元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23886400/

相关文章:

c++ - for 循环中没有检查条件,但循环仍然终止 C++

c++ - 我收到此代码的段错误?

objective-c - 当使用 NSOperation 在 iOS 7 中使用 Background Fetch 调用 completionHandler

angular - Typescript - 如何在 map 中设置对象键的值

python - 如何 "perfectly"覆盖字典?

c++ - 如何比较两个 Compare of two std::set

c++ - Cocos2d-x 和处理触摸事件

c++ - vector 的地址代表什么?

javascript - 在 Mac 上从本地文件 + JS 加载 webView 时进行缓存

objective-c - 如何解析私有(private) Objective-C 特定的 Mach-O 部分