Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c+中使用集合与使用数组+;_C++_Arrays_Set - Fatal编程技术网

C++ 在c+中使用集合与使用数组+;

C++ 在c+中使用集合与使用数组+;,c++,arrays,set,C++,Arrays,Set,我想从seach函数中保存一组迭代器是否有“更好的方法”来保存一组迭代器(数组与集合)。在内存效率方面,每种方法的优缺点是什么? 谢谢 集合只包含唯一的对象在不了解您要实现的目标的情况下谈论哪个数组或集合更好是没有意义的 您应该考虑一个问题:迭代器指向的是什么类型的容器,该容器是否需要更新 例如,如果要将迭代器存储到向量中(无论将迭代器放在何处),并且要更新向量,则先前存储的迭代器可能无效。存储迭代器时要非常小心 听起来你在缓存结果以提高速度。如果需要缓存结果,最好使用一个无序容器。对搜索结果使

我想从seach函数中保存一组迭代器是否有“更好的方法”来保存一组迭代器(数组与集合)。在内存效率方面,每种方法的优缺点是什么?


谢谢

集合只包含唯一的对象

在不了解您要实现的目标的情况下谈论哪个数组或集合更好是没有意义的

您应该考虑一个问题:迭代器指向的是什么类型的容器,该容器是否需要更新

例如,如果要将迭代器存储到向量中(无论将迭代器放在何处),并且要更新向量,则先前存储的迭代器可能无效。存储迭代器时要非常小心


听起来你在缓存结果以提高速度。如果需要缓存结果,最好使用一个无序容器。对搜索结果使用与缓存相同的键。不要存储迭代器,只存储查询键和实际结果。无序的_集有O(1)个查找时间,它们在散列密钥和存储结果时不会占用太多空间。

就内存而言,两者在空间效率上没有太大差异。但是,要考虑的是,在<代码>设置<代码>中,您的条目将被排序,但是您的<代码>数组< /代码>将使它们按照您所输入的顺序排列。您的
集合
也不允许您存储重复项。根据您的用例,一个可以为您提供更好的运行时或性能


也要考虑的是使用基本的<代码>数组< /代码>还是<代码>向量< /代码>;

向量
是C++包装的
数组
,使其可重新调整大小,允许插入、删除,并处理内存分配,以增加
数组
。如果您希望数组大小发生变化,这将有助于进行很好的优化。

这对于容器来说是一个很好的选择。@chris:没有到std::array的流程。这个参考资料有更新版本吗?@coelhudo,AFAIK,没有。有一个关于这个的问题,所有无序的版本都会把它弄得乱七八糟。