C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[24935] 아래 C++11 auto 의문이 더 커졌습니다
bugfree [bugfree] 5321 읽음    2014-10-26 17:17
먼저 답변해주신 박우성님과 빌더님께 감사드립니다

std::map <std::string, int> map;

map에 무작위로 데이타를 넣어두고


1번 방법

for ( const std::pair <std::string, int> & _pair : map)
         std::cout << _pair.second << std::endl;

2번 방법

for ( const auto & _pair : map )
         std::cout << _pair.second << std::endl;

두가지 방법으로 출력하는 코드에서 auto의 타입이
<const std::string, int>라는 빌더님의 설명에 좀 놀랐습니다
auto가 단순히 타이핑 노가다만 줄여주는거로 알았는데
그게 아니었네요

제가 의문이 더 커지게 된건 박우성님 답변내용 때문인데요

<const std::string, int>에서 const가 빠지는 바람에
string 값의 복사가 일어나서 그 만큼 시간이 더 걸린다고  하셨습니다

근데 제가 알고있기론, 그리고 테스트 해본 결과에 따르면

void func (const std::string str) 과
void func (std::string str) 은

const 있고 없고 상관없이 두 경우 다 복사가 일어납니다

class C {}; 가 있을 때

func (const C obj) 와 func (C obj) 도 호출해보면 마찬가집니다

const는 값을 변경하지 못하게 금지할뿐, 포인터가 아니라
두 경우 다 복사가 일어나서 다를게 없잖아요

auto를 사용한 속도가 더 빠른 이유에 의문점이 더 커졌습니다

+ -

관련 글 리스트
24935 아래 C++11 auto 의문이 더 커졌습니다 bugfree 5321 2014/10/26
24936     Re:아래 C++11 auto 의문이 더 커졌습니다 빌더(TWx) 6633 2014/10/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.