在这个问题中如何在C++ 11中有效地选择标准库容器?是一个在选择C++集合时使用的方便流程图.
我认为这对于那些不确定他们应该使用哪个集合的人来说是一个有用的资源,所以我试图找到类似Java的流程图而无法这样做.
什么资源和"备忘单"可以帮助人们选择在Java编程时使用的正确的集合?人们如何知道应该使用哪些List,Set和Map实现?
Set<Student> ts = new TreeSet<Student>();
for(Student s : studentInfo){
ts.add(s);
}
System.out.println(ts);
Run Code Online (Sandbox Code Playgroud)
为了对学生对象的集合进行排序,我在上面的一个case块中写了上面的代码片段.我的问题是:使用这种方法和使用Collections.sort();方法有什么区别.
我有一个程序处理大量数据集.由于程序一直在寻找容器中的对象,因此最好将对象存储在散列实现的容器中.
第一个想法是使用HashMap,因为获取和删除此容器的方法更适合我需要的用途.
但是,我开始看到HashMap的使用是相当大的内存消耗品,这是一个主要问题,所以我认为切换到HashSet会更好,因为它只使用<E>,而不是<K,V>每个元素,但是当我看到实现我学会了它使用底层的HashMap!这意味着它不会节省任何记忆!
所以这是我的问题:
是否有任何其他基于Hash的容器将显着减少内存耗材?
更新
根据评论的要求,我将对我的程序进行一些扩展,hashMap意味着保存一对其他对象,以及一些数值 - 从它们计算的浮点数.一路上,它提取了一些并进入新的对.给定一对,它需要确保它不会保持这对或删除它.可以使用float值或hashCodepair对象完成映射.
另外,当我说"庞大的数据集"时,我说的是~4*10 ^ 9个对象