que*_*ons 6 c++ java collections containers
我对容器和集合之间的区别感到困惑.我在维基百科上看到了它们,这就是我所理解的......
集合:存储可变数量的对象.防爆.列表,设置......
容器:DataStructures?防爆.出队,堆叠..
但我认为像list,tree等集合是数据结构,那么什么是容器.这又是什么意思..
实现容器的数据结构包括数组,列表,映射,队列,集合,堆栈,表,树和向量.
" C++语言标准(ISO/IEC 14882-1998 [E])在第23条中说容器是"C++程序可用于组织信息集合的组件",并补充说:"容器是存储其他对象的对象.它们通过构造函数,析构函数,插入和擦除操作来控制这些对象的分配和释放."它继续列出两种常规类型的容器:序列和关联容器.
C++标准说:"序列是一种容器,它将所有相同类型的有限对象组织成严格的线性排列." 三种类型的序列是vector,list和deque.
C++容器不能包含混合类型!
也许最有用的C#集合根本不被视为集合.C#数组比C++数组强大得多,它们本身支持许多需要C++类的操作.例如,Length属性告诉您数组中元素的数量,比如C++容器中的size()方法. "
从http://soa.sys-con.com/node/39460获取,您可以阅读本文,以便更好地理解Container和Collection概念.
除了AWT GUI组件的上下文之外,Java并没有真正使用术语"容器",其中a Container表示可以包含其他组件的GUI组件.
Collection 在Java中用于包含对象的数据结构,如您所述.
计算机科学通常倾向于将它们视为或多或少的同义词.
ISO C++标准确实没有建立非常明确的区别.它确实为容器提供了正式的定义(23.2.1):
容器是存储其他对象的对象.
......但它没有为收集提供这样的正式定义,并且更普遍地使用这个术语.例如,它将元组描述为对象的集合,即使按照上面的定义,它也是一个容器.
集合:存储可变数量的对象.防爆.列表,设置......
容器:DataStructures?防爆.出队,堆叠..
但我认为像list,tree等集合是数据结构,那么什么是容器.这又是什么意思..
据我所知,标准没有指明相反的东西,这些都是集合和容器.它们也恰好是数据结构,但"数据结构"是一种非常通用的计算机科学术语,适用于以某种方式组织数据的任何类型的聚合.
使用C++,您可以在其中找到更有用的区别,即由Stephanov构思的原始STL定义的概念.
Sequence是一个可变大小的Container,其元素按严格的线性顺序排列.它支持插入和删除元素.
以上介绍容器,如list,deque和vector.
Sorted Associative Container是一种关联容器.Sorted Associative Containers使用其键上的排序关系; 如果两个键都不小于另一个键,则认为它们是等效的.(例如,如果排序关系是不区分大小写的字符串比较,那么键"abcde"和"aBcDe"是等效的.)
以上描述的容器set和map.
Pair Associative Container是一个关联容器,它将一个键与一些其他对象相关联.Pair关联容器的值类型是pair.[1]
以上描述了容器之类的map.
关于这个主题的进一步阅读,关注轻微的语义差异:OOP术语:"容器"和"收集"