C++和 Java 数据结构的重叠:堆栈"top"与"peek"

Overlap in C++ and Java data structures: stack "top" vs "peek"

本文关键字:堆栈 top peek 重叠 Java 数据结构 C++      更新时间:2023-10-16

我经常在Java和C++中使用Stack数据结构。这是一个标准的数据结构,在实现许多算法时非常常见。

我的问题是(也是让我抓狂的事情)为什么C++使用"top"作为函数名,返回最顶端的元素值而不删除它,而Java使用"peek"作为方法名?

我知道数据结构没有标准,但计算机科学还不够成熟,不应该有一个标准吗?或者我只是一个新手,不知道一个标准。。。

你们这些专业程序员是否编写了自己的数据结构库,以遵守跨语言的通用接口?在我看来,这似乎是最好的做法。我用C++、Java、Python、C、Perl和PHP编写代码。除了为所有这些语言编写一个自定义界面之外,我看不到其他任何方法。我喜欢"偷看",但有什么标准我应该瞄准吗?

仅仅为了使方法名称相同而编写自定义接口将是巨大的时间浪费。这到底有什么意义?即使有这样的功能,你也无法在你提到的语言之间轻松地复制和粘贴大多数代码。

就我个人而言,我不喜欢STL矢量方法push_back()的名称。我更希望它只是被称为add(),一方面它会减少打字。然而,我从未想过我可能会改变它。这样做只会降低我的代码的可移植性和可读性。现在,我想用预处理器宏可以很容易地完成这项工作,但在我看来,即使这样也会浪费时间。

不,不可能,也永远不会成为标准。不管怎样,这两个名字都是有效的,如果你问我,top更有意义。此外,正如@memoticocotopus所说,拥有相同的方法名并不能让你将代码从一种语言复制到另一种语言。此外,像C++和Java这样的语言非常不同,并且支持不同的功能。如果一个标准必须使用最低的公分母,它就不能利用它所实现的语言的所有特性

不管怎样,还记得上次我们标准化东西时发生了什么吗?跨浏览器兼容性和移植C代码。一想到它就让我不寒而栗。