1. 함수 호출 시, 인수 전달 방법
• call by value
• 인수의 값 만이 함수로 복사
• call by reference
• 포인터나 별명을 이용하여 흉내 가능
• 인수의 주소가 함수로 복사
2. 함수 포인터
• 함수를 가리키는 포인터
• 함수도 메모리에 존재하므로, 주소가 있음
• 반환형 (*함수 포인터 이름)([매개변수1, 매개변수2, …])
3. Vector
• 동적 배열처럼 동작
• 코드가 실행될 때 배열 크기가 결정되고, 메모리에 할당되는 배열
• 자료형 *배열이름 = new 자료형[배열의 크기]; 을 이용하여 사용
• delete [] 배열이름; 을 이용하여 메모리 할당 해제
• 새로운 데이터는 배열의 뒤에 추가됨
3-1. Vector의 사용
• #include <vector> 를 이용하여 헤더파일 사용
• 선언
• vector<int> v; // int타입 벡터 생성
• vector<int> v = {1, 2, 3}; // int형 백터 생성 후 1, 2, 3 으로 초기화
• vector<int> v[10]; // 크기가 10인 int타입 벡터 생성
• vector<int> v(5); // 5개의 원소를 0으로 초기화
• vector<int> v(5, 3); // 5개의 원소를 3으로 초기화
• vector<int> v[] = {{1, 2}, {3, 4}}; // 백터 생성(행은 가변, 열은 고정)
• vector<vector<int>> v; // 2차원 백터 생성(행과 열 모두 가변)
• vector<int> v2(v); // 벡터 v를 복사하여 벡터v2 생성
• 데이터 삽입
• 벡터의 기본적인 데이터 삽입 방식은 뒤쪽에 추가되는 방식
• v.push_back(10); // 마지막 위치에 숫자 10 추가
• 반복자를 이용한 방식
• vector<int>::iterator it = v.begin(); // 반복자 생성
• it = v.insert(it, 2); //맨앞에 2를 삽입
• it = v.insert(it, 2, 3); // 맨앞에 3을 2개 삽입
• it = v.insert(it+2, 2, 4); // 2번째부터 4를 2개 삽입
• 데이터 삭제
• v.pop_back(); // 마지막에 넣은 값 제거
• v.erase(vec.begin()+10); // index 10의 값을 제거
• v.erase(vec.begin(), vec.begin()+5); // index 0~5의 값을 제거
• v.clear(); //모든 값 제거
3-2. STL vector 라이브러리 함수
4. Iterator
• 현재 처리하고 있는 자료의 위치를 기억하는 객체
• 포인터와 유사하며, 포인터 연산자 사용 가능
• 증감 연산자 사용 가능
• 비교 연산자 사용 가능