2012-09-01 2 views
-3

Java 및 C++에서 스택 데이터 구조를 자주 사용합니다. 이것은 표준 데이터 구조로 많은 알고리즘을 구현하는 데 매우 일반적입니다.C++ 및 Java 데이터 구조에서 겹침 : stack "top"vs "peek"

내 질문은 (그리고 나를 미치게하는 것) 왜 C++은 그것을 제거하지 않고 최상위 요소 값을 반환하는 함수 이름으로 "top"을 사용하고 Java는 메서드 이름으로 "peek"을 사용합니다 ?

나는 데이터 구조에 대한 표준이 없다는 것을 알고 있지만, 컴퓨터 과학이 표준이 있어야한다는 것을 충분히 알지 못했습니까? 아니면 표준에 대해 알기에는 너무 초보자입니다 ...

전문가 프로그래머는 다국어 공용 인터페이스를 준수하는 자체 데이터 구조 라이브러리를 작성합니까? 그것은 내 마음 속에서 할 수있는 가장 좋은 방법 인 것 같습니다. C++, Java, Python, C, Perl 및 PHP로 코드를 작성합니다. 나는 다른 방법을 보지 않고이 모든 언어에 대한 사용자 정의 인터페이스를 작성합니다. 나는 "엿보기"를 좋아하지만 목표로 삼아야하는 표준이 있습니까?

+0

C++에서'stack :: top'은 스택의 _top_ 요소를 반환하고 Java에서는 'peek' 함수가 맨 위 요소에서 _peek_를 사용합니까? –

+0

오케이, 나는이 사이트의 적개심에 놀랐다. 나는 그것이 새롭고 바보 같은 질문을위한 곳이 아니라고 생각합니다. 죄송합니다. – dvanaria

+0

@dvanaria : 미안하다. 나는 그것이 발견 된 질문이라고 생각한다. 요점은, 질문에는 실제로 대답이 없다는 것입니다. 그래서 사이트가이를 거부했습니다. 그러나 저는 그 의견을 불쾌하다고 말하고 있습니다. – Linuxios

답변

5

메서드 이름을 동일하게 만들기 위해 사용자 지정 인터페이스를 작성하는 것은 엄청난 시간 낭비입니다. 정확하게 요점은 무엇입니까? 이러한 기능을 사용하여 언급 한 언어간에 대부분의 코드를 쉽게 복사하여 붙여 넣기 할 수는 없습니다.

개인적으로 나는 STL 벡터 메서드 push_back()의 ​​이름을 좋아하지 않습니다. 나는 단지 add()라고 불리는 것이 더 좋을 것입니다. 한가지 더 적은 타이핑 일 것입니다. 그러나 나는 그것을 바꿀지도 모른다고 생각하지 않았다. 그렇게하면 내 코드는 이식성이 떨어지며 다른 사람들에게는 읽기 쉽지 않게됩니다. 자, 전처리 매크로를 사용하면이 작업을 상당히 쉽게 처리 할 수 ​​있다고 생각하지만, 시간이 너무 낭비 될 것입니다.

+1

만약'push_back' 대신에'add'를했다면, deque는 인터페이스에 맞지 않을 수 있습니다. – Mehrdad

+0

하지만 앞이나 뒤로 또는 중간에 '추가'할 수 있으므로 요소의 추가 위치를 나타내는 이름이어야합니다. – juanchopanza

+0

반드시 그렇지는 않습니다. 모든 것이 국제 대회에 주어진다. add()가 끝에 있고 addfront()가 그 반대를 의미한다는 것을 모든 사람이 이해한다면 제대로 작동 할 것입니다. 요점은, 메서드 이름에 대한 규칙은 다소 임의적이며 그 규칙을 따라 살아야한다는 것입니다. – mimicocotopus

3

아니요, 없을 수도없고 결코 표준이 될 수도 없습니다. 어쨌든, 두 이름 모두 유효합니다. 당신이 저에게 묻는다면, top이 더 합리적입니다. 또한 @mimicocotopus가 말했듯이 동일한 메소드 이름을 사용하는 것과는 달리 한 언어에서 다른 언어로 붙여 넣기 코드를 복사 할 수 있습니다. 또한 C++ 및 Java와 같은 언어는 매우 구별되며 다른 기능을 지원합니다. 표준이 가장 낮은 공통 분모를 사용해야한다면 구현 된 언어의 모든 기능을 이용할 수 없습니다.

어쨌든 우리가 마지막으로 표준화 한 것을 기억하십니까? 브라우저 호환성 및 C 코드 포팅. 그것은 저에게 단지 그것을 생각하는 떨림을줍니다.