在c++中使用集合与使用数组
Using a set vs usings an array in c++
我想保存一组seach函数的迭代器是否有"更好的方法"来保存一组迭代器(数组与集合)。在内存效率方面,每种方法的优缺点是什么
谢谢。
在不了解您想要实现的目标的情况下,谈论哪个是更好的数组或集合是没有意义的。
您应该考虑一个问题:迭代器指向什么样的容器,该容器是否需要更新?
例如,如果将迭代器存储到向量中(将这些迭代器放在哪里并不重要),并且更新了向量,则先前存储的迭代器可能无效。存储迭代器时要非常小心。
这听起来像是为了速度而缓存结果。如果您需要缓存结果,那么最好使用一个无序的容器。对搜索结果使用与缓存相同的关键字。不要存储迭代器,只存储查询键和实际结果。无序集合具有O(1)查找时间,并且它们在散列密钥和存储结果时不会占用太多空间。
Set只包含唯一对象http://en.cppreference.com/w/cpp/container/set
就内存而言,两者在空间效率方面没有太大差异。然而,需要考虑的是,在set
中,您的条目将被排序,但您的array
将按照您放入的顺序保存它们。您的set
也不允许存储重复项。根据您的用例,可以为您提供更好的运行时或性能。
此外,需要考虑的是您使用的是基本的array
还是vector
;vector
是C++封装的array
,使其可重新调整大小,允许插入、删除并处理用于增长array
的内存分配。如果您希望您的数组大小发生变化,这将是一个很好的优化。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 我们可以将集合的值存储在变量中吗?就像我们可以将数组的值存储在变量中一样
- C++中的集合(异构类型的数组)
- C 集合构建器中类成员数组的2D数组大小
- 只有Arduino的第一个对象在包含在另一个对象的集合/数组中时会丢失其数据属性值
- 如何将数组插入无序集合
- 支持多线程方法来构建数组中所有元素的集合吗
- 在c++中使用集合与使用数组
- 如何查找数组集合中第二大元素的索引
- c++(98) STL是否可以设置对int类型的数组进行散列,然后检查该数组是否存在于集合中?
- Java JNI: c++中原始(双精度)数组集合中的错误值
- Visual Studio - 如何在 MS 编译器中使用数组初始化C++向量/集合
- 将文本文件转换为 std::string 数组/集合的最佳方法是什么 C++.
- 创建集合关联数组