hyemi33   2년 전

c++공부한지 얼마안된 초보입니다...

문자열을 받을 때 string변수로 받으면 에러 없이 잘 동작하는데 

동적할당으로 받으면 왜 에러가 나나요?

실제로 이 코드에서 for (char j : arr) for문에 필요한 begin함수를 찾을 수 없다는데 이해가 잘 안가요 ㅠ

코드는 궁금해서 제가 임의적으로 만들어본 코드입니다

zenith82114   2년 전

for (char j : arr) 같은 형식의 반복문을 range-based for loop이라고 부르는데

C++11에서 추가된 문법이며 기존 for loop과 동일하지는 않습니다.

특히 arr이 있는 자리에 들어가는 것은

배열, { } 괄호를 이용한 초기화리스트(init-list), 반복자(iterator)를 제공하는 객체(std의 vector, string 등) 중 하나여야 합니다.

컴파일러가 begin 함수를 찾는 건 이 arr이라는 게 배열이나 초기화리스트는 확실히 아니니 반복자를 얻으려고 하는 것이고,

맨 앞 원소를 가리키는 반복자를 주는 함수가 begin이기 때문입니다.

동적 할당으로 얻은 메모리는 인덱스와 포인터 연산은 지원되는 건 배열과 비슷하나 이 문법에는 사용할 수 없습니다.

hyemi33   2년 전

이해했어요 정말 감사합니다

댓글을 작성하려면 로그인해야 합니다.