는 차이가있다 ?[:: 벡터 크기 (1)]
2
A
답변
1
유용한 차이가 없습니다.
back()
을 직접 사용하는 것이 부분적으로 더 효율적일 수 있지만, 나는 그것을 의심합니다. 정말 예리한 느낌이 들었다면 생성 된 어셈블러를 살펴볼 수 있습니다. 컴파일러가 얼마나 영리한 지에 따라 명령어 또는 두 가지의 차이를 만들 수 있습니다.
size()
과 []
만 사용하는 이전 방법은 배열을 이해하거나 다른 언어로 유사한 구문을 사용하는 사람들에게 훨씬 익숙합니다. back()
은 좀 더 C++에 특화되어 있습니다 (비록 그것이 거의 비밀스러운 관용어는 아닙니다).
2
mvt_act_idx = openCloseList.size()-1;
openCloseList[mvt_act_idx].A += a;
openCloseList
경우 서명되지 않은 뺄셈 다음 인덱스 벡터를 사용하는 큰 값을 생성합니다 비어 있습니다. 인덱싱 연산자는 주장 할 수도 있고하지 않을 수도 있습니다. openCloseList
가 비어
openCloseList.back().A += a;
경우 back
작업은 주장, 또는하지 않을 수 있습니다.
이러한 오류의 경우 back
의 오류가 더 쉽게 이해할 수 있습니다.
어쨌든, 첫 번째 코드 조각은 back
에 대한 호출이 충돌 할 수는 없지만, 부호없는 정수 (모듈로 동작이 간단하고 코드를 명확하게하는 경우를 제외하고) 숫자로 를 사용하지 않는 몇 가지 지침과 충돌 할 수 있습니다 그러한 지침과 함께.
관련 문제
- 1. 표준 벡터 크기 조정
- 2. Push_back 2D 벡터 배열로 1 차원 벡터
- 3. 벡터 크기 변경 QT에
- 4. for_each 벡터 크기 조정 벡터의 벡터
- 5. 크기 조정 벡터 컴파일러 오류
- 6. 벡터 선언 및 크기 할당
- 7. 크기() 메소드의 EASTL 벡터 디자인
- 8. 2D 벡터 크기 조정 런타임 오류
- 9. 고정 크기, 불변 및 특수 벡터 구현
- 10. 벡터 크기 조정/할당하지 기본값을 추가하지
- 11. 샘플 공간 크기 = 1 인 sample() 사용
- 12. 벡터 초기화 벡터
- 13. 행렬 벡터 항목과 행 크기 비교?
- 14. librsvg를 통해 벡터 이미지 크기 조절
- 15. 1 x m 매트릭스의 크기?
- 16. 벡터 벡터에서 벡터 얻기
- 17. matlab에 벡터 플로팅 벡터
- 18. 는 벡터
- 19. 벡터 문제가있는 벡터
- 20. 벡터
- 21. 벡터 벡터, 힙 대 스택 (C++)
- 22. 벡터 ++
- 23. 벡터 내의 벡터
- 24. 선형 크기 증가가 때때로 1 씩 증가합니다.
- 25. 비례 행 크기 1 고정 행
- 26. 벡터 벡터 비교
- 27. 벡터 선언의 C++ 벡터
- 28. 벡터?
- 29. 벡터
- 30. 벡터
우려되는 점은 무엇입니까? 차이가 있어야하는 이유는 무엇입니까? – Vlad
@Vlad : 나는 첫 번째 예제처럼 많은 코드를 발견했으며, 리팩토링해야하는지 궁금합니다. 가독성 외의 improvmenet이 없다면 나는 귀찮게하지 않을 것입니다. – lezebulon
글쎄요, 여전히 많은 사람들이 STL을 배열을 제공하는 것으로 생각합니다. 그래서 그들은 작업에 익숙한 것과 같은 방식으로'std :: vector'를 사용합니다 C 배열. – Vlad