[C++ STL] 개요
·
Programming/C++
각각의 주제에 대해서는 다른 글에서 자세히 설명하는 것으로 하고, 간단한 개념과 종류만 가볍게 살펴 보자. C++의 STL은 보통 세 개의 라이브러리를 의미한다.임의 타입의 객체를 보관할 수 있는 컨테이너(container)컨테이너에 보관된 원소에 접근할 수 있는 반복자(iterator)반복자들을 가지고 일련의 작업을 수행할 수 있는 알고리즘(algorithm)컨테이너 (Container)C++ STL 컨테이너는 크게 두 가지로 구분할 수 있다.배열처럼 객체들을 순차적으로 보관하는 시퀀스 컨테이너(sequence container)키와 대응되는 값을 찾아주는 연관 컨테이너(associative container)C++ STL 컨테이너의 종류는 다음과 같다벡터 (std::vector)리스트 (std::li..
팁 1
·
Programming/ETC
1. 한 개의 함수가 한 가지의 명확한 기능을 수행하는가? 하나의 함수가 여러 기능을 수행한다면 나쁜 함수. 하나의 함수/메서드는 논리적으로 구분되는 가장 작은 단위의 작업을 처리하는 것이 이상적이다. 2. 함수에 전달되는 Parameter가 적절한가? 3. Parameter의 올바른 IN/OUT 설정 4. 함수의 return이 명확한가? 5. 함수가 적절한 기능 단위로 잘 분리되어 있는가? 예를 들자면, 함수 안에 여러 함수들이 있을 수 있는데, 이때 각각의 함수의 역할이 명확하게 분리되어 있는지 확인 6. 함수의 쌍이 존재하는가? (선택적) 예를 들자면, insert라는 함수가 있는데, delete 함수가 없으면(삭제 코드가 함수가 아닌 다른 곳에 있는 경우 등) 뭔가 이상함. 7. 불필요한 최적화코..
포인터
·
Programming/C
포인터 포인터란 쉽게 말하자면 주소를 담는 변수다. 하지만 이렇게 말하면 헷갈릴 수도 있기 때문에 그냥 포인터도 하나의 자료형으로 생각하는 것이 편할 것이다. 즉, '특정 자료형 변수의 주소'를 다루는 자료형이라고 생각하는 것이다. // 포인터의 선언에 대해서는 아래 서술 int a; float b; char c; int* p; // int형 변수 a의 주소를 다루는 int*형 변수 p float *q; // float형 변수 b의 주소를 다루는 float*형 변수 q char* r; // char형 변수 c의 주소를 다루는 char*형 변수 r 포인터를 선언하는 방법은 변수 이름 앞에 *를 붙이는 것이다. 하지만 비주얼 스튜디오에서도 자동 완성으로 자료형 바로 뒤에 *가 붙는 것을 보아 int* p와 ..
메모리 할당과 주소
·
Programming/C
들어가기에 앞서, 메모리에 대해 기본적으로 알아야할 것이 있다. 메모리는 바이트 단위로 나뉜다.메모리 공간 한 칸의 크기는 1 바이트다.각 바이트마다 주소가 지정되어 있다. 이제 C 언어에서 변수를 선언할 때 메모리 할당이 어떤식으로 일어나는지 알아보자. 변수의 메모리 할당 & 할당되는 방식메모리 공간을 표현한다면 위의 표로 나타낼 수 있고, 각각의 칸은 주소(ex: 1024, 1025, 1026 ... 등)를 가진다. 이때 크기가 4 바이트인 int형 변수 a, b, c를 선언해보자. int형 변수 a, b, c는 변수의 선언과 동시에 메모리 상 빈 부분에 할당이 된다. 이때 꼭 알아야할 것은 변수가 메모리 상에 할당되는 방법이다. 변수의 할당을 쉽게 설명하자면, 해당 변수의 자료형의 크기만큼의 빈 칸..
문자열과 관련 함수
·
Programming/C
문자열 문자열은 쉽게 말하면 문자들의 연속, 즉 문자 배열이다. 예를 들어 Hello라는 문자열을 문자 배열로 표현하면 H E L L O \0 이다. 이때 주의할 점은 문자열의 끝에는 항상 널 문자(\0)가 붙는다는 것이다. 그렇기 때문에 문자형 배열에 문자열을 입력할 때는 배열의 크기가 항상 문자 개수 + 1 이상이여야 한다. 간단한 예제를 하나 살펴보자 #include int main(void) { char ss[8] = "Basic-C"; // 문자형 배열 int i; ss[5] = '\0'; // '-'를 널문자로 바꿈 printf("문자열 배열 ss => %s \n", ss); return 0; } 5번 줄을 살펴보자. 5번 줄의 코드는 크기가 8인 문자형 배열 ss을 "Basic-C"라는 문자..
오버로드
·
Programming/ETC
오버로드 : 함수의 이름은 같지만 다른 역할을 하는 함수. 입력(매개변수의 개수, 자료형 등)이나 출력 중 하나라도 형태가 달라야 한다. int sum(int a, int b) { return a+b; } // 함수의 오버로딩 int sum(int a, int b, int c) { return a+b+c; } int main() { printf(sum(1,2)); printf(sum(1,2,3)); } 장점 1. 같은 이름으로 다양한 형태의 입력에 대응할 수 있다. 2. 내부 동작은 비슷한데 굳이 함수를 다른 이름으로 여러개로 나눌 필요가 없기 때문에 혼동을 줄일 수 있다.
Call by Reference, Call by Value, Call by Address
·
Programming/ETC
함수 호출 시에 인수를 전달하는 방법들 1. Call by Reference or Call by Address (둘 사이에 차이점은 있음) 함수로 원본 변수가 바로 전달되는 방식. 포인터를 통해 인수로 주소값을 전달하면, 함수의 매개변수의 값을 변경할 때 원본 함수도 영향을 받게 된다. 2. Call by Value 함수의 인수로 받은 값을 함수의 매개변수로 복사한다. 이때 함수의 인수가 변수라면, 함수의 인수와 함수의 매개변수는 서로 다른 메모리 공간을 사용하므로 함수 내에서 아무리 매개변수의 값을 변경하더라도 인수로 전달된 원본 변수에는 아무런 영향을 주지 않는다.
snwdaaa
'Programming' 카테고리의 글 목록 (3 Page)