是否有可能根据将这些元素插入 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/