C++ STL与Java集合框架

C++ STL与Java集合框架

Java和C++提供了它们不同的功能和使用案例。当涉及到数据结构和算法时,Java有一个特殊的框架,名为Java集合框架,C++提供了一个名为STL的库。

Java收集框架

Java集合 提供了一个存储和处理对象组的框架,并包含一个名为iterable的接口,该接口提供了迭代器来迭代所有的集合。集合是一个代表一组对象的对象(比如经典的Vector类)。集合框架是一个统一的架构,用于表示和操作集合。

STL in C++

标准模板库(STL)是一套C++模板类,用于提供常见的编程数据结构和功能,如列表、堆栈、数组等。它是一个由容器类、算法和迭代器组成的库。它是一个通用的库,因此,它的组件是参数化的。

STL有4个组成部分。

  • Algorithms
    • Containers
    • Functions
    • Iterators

C++提供了精心设计的STL,而Java则有容器。因此,请看看它们都包含什么。

STL中的容器与java集合框架中的集合接口的相似性和差异性

参数 Containers in STL java集合框架中的集合接口
List list li; ArrayList arr=new ArrayList()
LinkedListLL=new LinkedList()
Vector vector v; Vector v =new Vector()
Stack stack s; Stack s = new Stack();
Queue queueq; Queue q = new LinkedList<>();
Dequeue deque deque; Dequed = new ArrayDeque();
PriorityQueue priority_queue pq; PriorityQueue pq=new PriorityQueue();
Set set s; Set set1 = new HashSet();
Set set2 = new LinkedHashSet();
Set set3 = new TreeSet();
Map map<data-type1,data-type2> mp; Map<data-type1, data-type2> map= new HashMap<data-type1, data-type2>();

C++标准模板库(STL)与Java集合框架(JCF)的对比

| STL | Java集合框架(JCF) |
| :———————————- | :—————— |
| 我们可以在C++中把函数作为参数传递。 | 在Java中不允许。 |
| 在C++中不存在接口。 | Java依赖于接口。 |
在STL中,容器可以包含对象或原始类型的对象,许多算法对容器或数组进行操作 | 在Java中,容器只包含对象,而且必须为容器和数组分别定义算法。
这些算法与它们在STL中操作的容器无关。 | 这些算法是由java中的容器组织的。
STL将性能作为接口要求的一部分。 | 对于java集合来说,通常不是这种情况。
在STL集合中,它可以有指向对象的指针或对象本身。 | 在Java集合中,它只能包含指向对象的指针。
STL使用值语义,所以赋值会复制一个集合。 | Java使用引用语义,赋值只是简单地分配了一个引用
STL中的迭代器有可以被比较的值。 | 在java中,迭代器不包含可以进行比较的值。
STL有一个迭代器的层次结构,它具有不同的能力,并提供对容器元素的随机访问。 | Java不提供随机访问的迭代器。它只提供Iterator和ListIterator。
STL框架包括一个内存分配模型,STL程序员需要注意处理内存分配的问题。 | 联合基金没有解决这两个问题。

这些是STL和java集合框架的主要区别。就在竞争性编程中的使用而言,人们可以根据自己的方便使用任何一种,因为它可以使代码看起来不那么复杂,并减少你完成一个问题的时间。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程