yeasung67   3년 전

사실 c++ 입문한지는 얼마 안됐는데 ㅠ

궁금한게 제가 이러한 코드를 사용했습니다.

항상 예전부터 이게 될지 안될지 궁금했는데 이번에 한 번 테스트 해봤습니다

왠지(?) 직감상 배열도 이런식으로 넘겨줄 수 있었으니까?

벡터 자료형도 이런식으로 넘길 수 있지 않을까?

싶어서 넘겼는데 이상하게 되더군요? 굉장이 이상하지만 이게 되는 방식이구나! 생각해서

온라인저지에 제출했는데 아니나 다를까 이 부분에서 코드 오류가 나더군요?

아마 제 컴파일러가 표준을 안지키는 컴파일러(?)인거 같네요

결국 argument로 넘기는 걸 포기하고 main 코드 안에서 계산 퉁쳐서 정답은 나왔는데...

혹시 vector같은 자료형도 함수의 argument로 넘기는 방법이 있을까요?

너무 궁금해서 여러번 구글링해봤는데 제가 원하는 답변을 찾기가 어렵더라고요....

혹시 알고 계신 c++고수님 있으시면... c린이에게 깨우침을 주세요...!

p_ce1052   3년 전

올려주신 코드 잘 제출됩니다. 어느 사이트에서 에러가 뜨신지 모르겠지만 제출할 때 C++ 버전을 높여보세요 다만 저렇게 레퍼런스가 아닌 변수형태로 전달하면 벡터의 원소 모두가 복사되기 때문에 한 번 넘길때 벡터 크기만큼의 시간이 소요됩니다.

djm03178   3년 전

이 문제에 컴파일 에러가 나는 코드를 제출하신 적이 없는데, 저 부분이 오류라고 생각하신 이유를 모르겠습니다.

yeasung67   3년 전

앗... 이상하네요 백준 온라인저지 여기서 5번 제출했는데

다 틀렸다고 나왔다가 저 부분 고쳐서 제출하니까 바로 성공했다고 나왔거든요 이상하네요.... 그러면 저런 문법은 사용해도 괜찮지만 call by value라서 시간이 오래 걸리는 군요

그러면 포인터 형식으로 전달하는 방법도 있다는 말씀이신데argument의 형식을 vector<int> *arr 이런 형태로 전달하면 될까요??

djm03178   3년 전

C++에는 이런 경우를 위해 존재하는 참조자라는 것이 있습니다. 포인터보다 깔끔하고 사용하기 편리합니다.

yeasung67   3년 전

아하 참조자라는 말은 들어봤는데 아직 그게 뭔지 제대로 본적이 없어서..! 찾아서 공부하겠습니다 감사합니다^^

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