2013-06-16 4 views
2

를 처리 할 때 다음, 나는 몇 가지 코드를 사용는 반복자에 대한 반복자

(*iterator).first 

을 보았다하지만 난 장점이 하나를 무엇을 통해 사용 방법 다음

iterator->first 

를 사용할 수 있다고 생각 다른? 어떤게 더 좋아?

+1

등가입니다. 그러나 벡터 벡터에 대한 반복자를 생각해보십시오. 예를 들어, 요소의'operator [] '에 액세스하려는 경우 구문에 약간의 차이가 있습니다. '(* it) [0]'vs'it-> operator [] (0)'. 전자는 약간 이상해 보입니다. – jrok

+1

@jrok 구문이 정확히 "이상한 무료"라고 주장하고 싶습니다. –

+0

@JoachimIsaksson it.operator *(). operator [] (0)':) – jrok

답변

2

이 두 명령문 중 하나를 사용하면 아무런 이점이 없으며 정확히 같은 컴퓨터 코드로 컴파일됩니다.

그러나 나는 두 번째 것이 약간 더 명확하다고 말하고 싶지만 이것은 단순히 개인적인 취향입니다.

+0

나는 약간 더 명확하게 말할 것입니다. 의견에서 조크가 지적했듯이 과부하가 걸린 운영자가 관련되어 있지 않는 한. –

+0

리뷰에 첫 번째 양식을 전달하지 않겠습니다. –

0

여러 포인터가 서로를 가리키고 마지막 포인터가 필요한 개체를 가리킬 때마다 두 번째 구문 (구문)의 이점에 밑줄이 생길 수 있습니다. p1->p2->obj 코드가 더 명확한 경우 (*(*p1).p2).obj입니다. 3 개 이상의 포인터가있을 때 참조를한다고 상상해보십시오. 구문 오류가있는 완벽한 장소이기도합니다. 코드를 읽는 사람 (심지어 너)이라면 -> 연산자를 사용하여 코드를 작성할 때마다 무엇을하고 있었는지 분명하게 알 수 있습니다.

1

가독성.

두 번째 것 (나에게 IMHO)이 더 읽기 쉽습니다.

관련 문제