• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

vector 를 파라미터로 보낼때 질문

21.11.23 10:16 작성 조회수 177

0

vector를 함수 파라미터로 보낼때 다른 정적배열이나 동적배열

과는 다르게 레퍼런스로 보내지 않으면

배열을 복사하는거같더라고요. 즉 레퍼런스로 보내지 않으면 함수 안의 내용을 바꿔도 진짜 값은 안바뀌네요

백터도 엄연히 배열아닌가요??

벡터가 내부적으로 구현이 특별해서 그런걸까요?

테스트해보니 array 배열도 벡터랑 똑같네요

답변 1

답변을 작성해보세요.

2

안소님의 프로필

안소

2021.11.23

vector 는 동적 배열을 편하게 사용하기 위해 만들어진 객체라고 보시면 돼요!

동적 배열이긴 동적 배열인데 클래스로 래핑 되어있다고 생각하시면 됩니다. 

(https://en.cppreference.com/w/cpp/container/vector 이런 멤버들이 있는 클래스에요)

vector<int> vec; 이런게 있다면 vector 라는 이름의 클래스 (push_back 같은 함수나 [ ] 연산자 이런 것들이 정의되어 있는) 에서 만들어진 vec 라는 객체라고 이해하는게 맞습니다.

질문자님께서는 vec 를 배열과 동일하게 생각하시어 포인터로 넘겨지니 call by reference 로 동작하는게 맞는 것 같다고 이해했는데 맞을까요? 위와 같은 설명에 기반하자면, vector 또한 그 자체로 뭐 포인터거나 그런게 아닌 그냥 객체나 마찬가지기 때문에 파라미터에 그냥 넘겼다면 다른 변수들처럼 call by value 로 넘어갑니다

조준수님의 프로필

조준수

질문자

2021.11.24

아 그렇군요 감사합니다