-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
vector 를 파라미터로 보낼때 질문
21.11.23 10:16 작성 조회수 177
0
vector를 함수 파라미터로 보낼때 다른 정적배열이나 동적배열
과는 다르게 레퍼런스로 보내지 않으면
배열을 복사하는거같더라고요. 즉 레퍼런스로 보내지 않으면 함수 안의 내용을 바꿔도 진짜 값은 안바뀌네요
백터도 엄연히 배열아닌가요??
벡터가 내부적으로 구현이 특별해서 그런걸까요?
테스트해보니 array 배열도 벡터랑 똑같네요
답변을 작성해보세요.
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 로 넘어갑니다
답변 1