티스토리 뷰
1. STL과 함수 인자
함수 인자
첫 번째 코드에서는 int를 함수 인자로 보내면 값이 복사되는 형태로 함수로 들어가기 때문에, main에 있는 원본 값은 변하지 않음!
두 번째 코드에서는 C++에서 배열을 함수로 넘겨주는 경우 배열의 주소를 넘겨주는 것이기 때문에 함수 인자를 받은 함수 내에서 값을 변화시키면 원본 값에도 영향을 줌.
세 번째 코드에서는 구조체의 경우를 볼 수 있는데, 첫 번째 코드와 비슷하게 구조체를 넘겨줄 때도 값이 복사되는 형태로 넘어가기 때문에 구조체 원본 값에는 영향을 주지 못함.
참조자(reference)
만약 두 값을 바꾸는 swap 함수를 구현해야됐다면 C에서는 포인터를 활용하여 swap 함수를 만들었음. (위에와 같은 맥락으로, 값만 함수 인자로 보내는 건 원본 함수에 영향을 줄 수 없으니깐!) 하지만, C++에서는 이 방법 말고도 참조자라는 것을 쓸 수 있음!
참조자는 이미 선언된 변수에 다른 이름, 즉, 별명을 붙여주는 것과 동일하다고 이해하면 될 듯함. 따라서 위의 코드에서도 기존 main 함수에서 선언된 두 변수를 함수 인자로 넘겨줄 때 a와 b라는 새로운 별명을 붙여 자유롭게 사용 가능한 걸로 이해하면 될 듯!
📌 참조자 개념 참고
http://www.tcpschool.com/cpp/cpp_cppFunction_reference
STL(Standard Template Library) 중 vector
STL은 C++에서 제공되는 라이브러리인데, 우선은 맛보기로 vector을 알아보자!
vector는 가변 배열로 배열의 크기를 유동적으로 관리할 수 있음. vector 기능을 사용하기 위해서는 vector 헤드를 사용해야 함. vector 배열을 선언한 이 후에는 일반 배열처럼 인덱스를 이용해 접근하고 다 할 수 있음.
void func1(vector<int> v){
v[10] = 7;
}
int main(void){
vector<int> v(100);
func1(v);
cout << v[10];
}
//출력 결과는 0!
위 예제에서 보듯이 STL도 구조체와 비슷하게 함수 인자로 넘기게 되면 복사를 하여 값을 넘기는 형태이기 때문에 원본 값에는 아무런 영향을 주지 않음!!
그래서 STL이 함수 인자를 넘길 때 복사본을 넘긴다는 게 어떤 포인트에서 우리한테 도움이 되냐
== 나중에 코드를 짤 때 시간 복잡도를 대강 파악하는 데 좋음!
2. 표준 입출력
cin >> 저장하고 싶은 값
cout << 출력할 값
cin, cout을 사용하고 싶다면 ios::sync_with_stdio(0), cin.tie(0)를 꼭 써주자!!
이는 코테 문풀에 더 유리하기 때문임. 시간을 단축시킬 수 있는 코드임! 이걸 해두지 않으면 입출력 양이 많을 경우 시간 초과가 날 수 있음.
자세한 이유와 원리를 알고싶다면 바킹독님 블로그를 참조하자..😇
3. 코드 작성 팁
1) 코딩테스트와 개발은 다르다!
깔끔한 코드 <<<< 간결하고 빠르고 내 방식대로 짜는 코드
2) 출력 맨 마지막 공백 혹은 줄바꿈이 추가로 있어도 상관 X
출력한 값들 맨 마지막 요소에도 공백이나 줄바꿈이 추가되어있더라도 체점 결과에는 아무 상관이 없다고 함.
3) (권장) 디버거는 굳이 사용하지 않아도 됨
코테 정답 코드를 꽤 짧기 때문에 디버거를 사용하지 않고 중간중간 print문을 넣어주면서 디버깅을 하는 게 편할 것. 외려 디버거를 사용할 경우 혼란스러울 수도!
'🥞 Algorithm > Algorithm-squirrels 스터디' 카테고리의 다른 글
[바킹독의 실전 알고리즘] 0x06강 - 큐 (0) | 2023.02.01 |
---|---|
[바킹독의 실전 알고리즘] 0x05강 - 스택 (0) | 2023.02.01 |
[바킹독의 실전 알고리즘] 0x04강 - 연결 리스트 (1) | 2023.01.30 |
[바킹독의 실전 알고리즘] 0x03강 - 배열 (1) | 2023.01.28 |
[바킹독의 실전 알고리즘] 0x01강 - 기초 코드 작성 요령 I (2) | 2023.01.26 |
- Total
- Today
- Yesterday
- AWS
- access token
- jwt
- vpc peering
- DOM
- 면접을 위한 CS 전공지식 노트
- VPC
- Subnet
- 정렬
- TypeScript
- 리액트를 다루는 기술
- 로그인 기능 구현
- 세오스
- refresh token
- JWT 토큰
- 이분탐색
- 리액트
- ceos
- route table
- 바리바리
- IGW
- cloud
- 쿠키
- react
- 그리디
- 프론트엔드
- AwsCloudClubs
- 로컬스토리지
- NaCl
- 투포인터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |