在哪里可以找到SensorDeredSet(Objective C)源代码?按C+中的插入顺序从集合中读取元素+;? P>有可能从元素中插入元素(从C++中,在C++中,E STD::集合)中,根据这些元素插入到集合中的顺序(C++)吗? 我可以使用矢量或列表按插入顺序进行读取。但我希望插入、搜索等都在O(log(n))中完成。使用SET是必需的,我不能改变这一点

在哪里可以找到SensorDeredSet(Objective C)源代码?按C+中的插入顺序从集合中读取元素+;? P>有可能从元素中插入元素(从C++中,在C++中,E STD::集合)中,根据这些元素插入到集合中的顺序(C++)吗? 我可以使用矢量或列表按插入顺序进行读取。但我希望插入、搜索等都在O(log(n))中完成。使用SET是必需的,我不能改变这一点,c++,objective-c,set,C++,Objective C,Set,使用额外内存存储元素id或插入序列号等需要大量内存。这种解决办法对我没有帮助 我读了一些Objective-C,SensorDeredSet中给出这种功能的地方(我不知道Objective-C,SensorDeredSet)。在C++中可以实现类似的功能吗? Edit1:sensorderedset的源代码可用吗?如果可用,我可以在哪里找到?您可以使用带有对象键的std::map,并在map中计算插入顺序(参见下面的示例): std::map M; ... M.insert(标准::制作配对(y

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

我读了一些Objective-C,SensorDeredSet中给出这种功能的地方(我不知道Objective-C,SensorDeredSet)。在C++中可以实现类似的功能吗?
Edit1:sensorderedset的源代码可用吗?如果可用,我可以在哪里找到?

您可以使用带有对象键的
std::map
,并在
map
中计算插入顺序(参见下面的示例):

std::map M;
...
M.insert(标准::制作配对(yourObj,M.size()+1));

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

std::set根据值类型T的order函数进行排序。。。但是插入的顺序丢失了。您可以存储一个包装器对象来跟踪插入顺序。@jsantander:您能解释一下包装器对象吗..Boost是一个选项吗?如果看到你写了“很多内存”,那是什么样的应用程序呢?你能展示一些原始需求的细节吗?使用map不会增加内存需求吗?
std::map<yourObj, std::size_t> M;
...
M.insert(std::make_pair(yourObj, M.size() + 1));