컴공댕이 공부일지
[ 참조, 상수 ] C++에서 함수에 벡터를 전달하는 방법 (&, const 키워드의 의미) 본문
728x90
매번 헷갈렸어서 확실히 정리했다.
1. 벡터를 값으로 전달하기
이렇게 하면 함수 내에서 벡터의 복사본이 생성됩니다.
#include <iostream>
#include <vector>
void processVector(std::vector<int> vec) {
// 벡터 처리
for (int i : vec) {
std::cout << i << " ";
}
std::cout << std::endl;
}
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
processVector(myVector);
return 0;
}
2. 벡터를 참조(&)로 전달하기
복사본이 생성되지 않고 주소값을 전달해, 원본 벡터가 함수로 전달됩니다.
이렇게 하면 함수 내에서 벡터의 원본을 수정할 수 있습니다
#include <iostream>
#include <vector>
void processVector(std::vector<int>& vec) {
// 벡터 처리
for (int& i : vec) {
i *= 2; // 각 요소를 두 배로 증가시킴
}
}
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
processVector(myVector);
for (int i : myVector) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
3. 벡터를 상수 참조(const &)로 전달하기
상수 참조로 벡터를 전달하면 참조로 전달된 원본 벡터가 수정되지 않음을 보장
이 방법은 함수가 벡터를 읽기만 하고 수정하지 않을 때 유용
#include <iostream>
#include <vector>
void processVector(std::vector<int> vec) {
// 벡터 처리
for (int i : vec) {
std::cout << i << " ";
}
std::cout << std::endl;
}
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
processVector(myVector);
return 0;
}
코드의 main 을 줄이고 사용자 정의 함수로 구현을 할 때에 꼭 알아둬야 할 내용들이다.
메인에서 입출력을 받고, 기능 구현을 함수에서 하므로, 벡터를 전달할 일이 많기 때문이다.
알튜비튜 처음엔 이게 다 헷갈려서 막 쓰고 그랬음..ㅎㅎ 이젠 알고 쓰자 !
728x90
'기록 > 이론 공부 정리' 카테고리의 다른 글
[ EDOC 세미나 ] 1st. 시간 복잡도의 이해📈 최대 부분합 문제 MaximumSubarray ( C++ 백준 1912 연속합, 16993 연속합과 커리 ) (0) | 2023.11.06 |
---|---|
[Java 공부기록 ] 세 번째 : 클래스와 객체 (OOP) (0) | 2023.04.06 |
[Java 공부기록 ] 두 번째 : 배열, String (0) | 2023.03.20 |
[Java 공부기록 ] 첫 번째 : 반복문, 메소드, 오버로딩, Call by value) (0) | 2023.03.10 |
공부 기록을 시작하며.. (0) | 2023.03.09 |
Comments