안녕하세요. 우당탕탕 개발일지입니다. 2학년 1학기 데이터 구조론을 듣게 되었습니다. 수업 중 배운 내용을 복습하는 용도입니다. 파이팅!
- class
- container
- 초기화 리스트
- explict
- #ifndef, #endif
- const
- point
1. Class(클래스)
class=사용자가 정의한 데이터 타입.
=새로운 데이터 타입을 만드는 방법.
private
: 객체의 상태를 알려주는 게 변하면 안 되기 때문에 사용.
2.container(컨테이너)
컨테이너=데이터를 저장하고 관리하기 위한 클래스.
1) 순차 컨테이너 _vector
일반적인 자료구조와 동일한 형태 자료를 입력한 순서대로 저장하기 때문에 저장, 검색, 알고리즘에 불림
=> 많지 않은 자료, 검색 속도 중요하지 않을 때 사용.
- vector와 함께 쓰는 함수
vector<int>v; | |
v.push_back() | 새로운 원소를 추가하기 위해 사용. 임시객체 생성→ 값을 복사 → Vector에 삽입 → 객체 소멸 |
v.move(v1) | v에 v1을 저장하고 v1은 삭제 됨. |
v.size() | 벡터의 크기를 알 수 있는 함수. |
3. 초기화 리스트
초기화 리스트 =생성자 함수 초기화.
(1) 배열 초기화 리스트:
int myArray[] = {1, 2, 3, 4, 5};
(2) 벡터 초기화 리스트
#include <vector>
std::vector<int> myVector = {1, 2, 3, 4, 5};
(3) 클래스 멤버 변수 초기화 리스트
class MyClass {
public:
int x;
int y;
MyClass(int a, int b) : x(a), y(b) {}
};
4.explict
explict = 초기화가 반드시 함수로만 해야 한다.
주로 생성자를 초기화하는데 이용되고 타입이 변하는 걸 방지하는 목적을 가진다.
IntCell obj3=37;// 이렇게 초기화 불가능하게 함
IntCell obj3 (37) //이렇게 해야한다.
5.#ifndef, #endif
= header file이 2번 호출되는 걸 막음
- 전처리문: 컴파일 이전에 미리 처리되는 문장
5-1 조건 처리를 위한 전처리문
=> #if, #ifdef, #ifndef, #else, #elif, #endif
: 헤더파일의 중복을 막는 방법의 하나로 #ifndef을 사용한다. 이전에 include 되어 있으면 #endif 쪽으로 점프해 버려 결국 한번 선언되는 것이다.
Q source file에 적지 않고 왜 header file로 왜 분리할까?
A) 클래스를 사용하는 사람은 구현에 관한 걸 굳이 알 필요 없어서. h 분리하는 것
6.const
const = 변수나 함수의 값을 변경할 수 없음을 나타낸다.
- const 사용하면은 객체 생성 안 하고도 바로 main함수에서 함수 이름만 적어서 사용 가능하다.
- . read에 const를 붙이면 읽기 전용으로 쓸 거라는 말이다.
- nterface에서 const 없이 만들어두고 implement에서 const 없이 해서 동작하게 하려면은 error 난다.
7.point 변수 (*)
point =메모리 주소를 가리키는 변수
- 값이 같이 변하지 않음→ 주소를 참조하는 게 아니라 point변수 공간을 만들어 줌.
'[전공 CS] > 자료구조' 카테고리의 다른 글
[자료구조] C++ 기초(2)_ The Big5, call by constant reference (0) | 2024.05.17 |
---|