개념 Self Study📝/C, C++
-
C++ Vector개념 Self Study📝/C, C++ 2023. 8. 10. 13:16
1. Vector란? - Vector(Queue)는 동적 배열 구조를 C++로 구현한 것으로 맨 끝에서만 삽입 및 삭제가 일어나는 구조이다. 일반 배열과 차이점이라면 동적으로 크기가 변하고 메모리가 연속적 자동으로 배열 크기 조절 가능 유연하게 객체의 추가 및 삭제가 가능하다 *중간데이터 삭제시 vector의 erase함수를 통해 삭제할 수 있다. => 삭제가 빈번할 경우 Linked List가 효율적이다. >>Vector가 배열에 비해 성능은 떨어지지만 메모리를 효울적으로 관리하고 예외처리가 쉽다. 2. Vector의 헤더파일 Vector을 사용하기 위한 헤더파일 >> #include을 포함해야한다. vector 변수명; 으로 vector을 선언한다. ex) vector p; 3.Vector의 선언 방..
-
Pair 클래스개념 Self Study📝/C, C++ 2023. 8. 10. 11:29
1. 개요 - pair클래스는 뭔가? 애초에 처음보는 것이고 제공되는 클래스인지 조차도 몰랐으니 이제 알아가보자 2.pair 클래스 사용자가 지정한 2개의 타입의 데이터를 저장하는데 사용한다. 서로 연관된 2개의 데이터를 한쌍으로 묶어서 다룰 때 사용하면 편리하다. => 이점: 기존에는 서로 연관된 2개의 데이터를 다룰 때, 구조체를 따로 정의해서 번거로웠으나, pair클래스를 통해 편리하게 관리가 가능하다. 3. pair의 헤더파일 pair클래스는 #include 라는 헤더파일에 존재하는 STL이다. 그러나, vector 헤더파일에도 utilty가 존재한다. 4. pair 클래스의 형태 template struct pair; 형태는 해당 코드와 같이 형성되어 있으며, 이다. 5. 함수의 사용법 pair..
-
C++ Optional, varient, tuple개념 Self Study📝/C, C++ 2023. 8. 10. 09:48
1. 개요 - 기존에 자주 사용하지는 않았지만 웹개발 시에 사용하였던 것들이 C++과 비교하여 비슷한 기능을 하는지 알아가보자 2. std::Optional - 원하는 값을 보관할 수 도, 안할 수 도 있는 클래스 해당 객체는 값을 리턴 할 때 값이 없음을 표현하기에 유용하다. ex) Map을 통하여 대응되는 값을 구성하였을 때 원하는 위치에 데이터가 존재하지 않는 경우가 있다. => 해당 위치에 데이터가 존재하지 않지만 정상적으로 작동하는 경우가 있다. But, 맵에 키가 존재하지 않는 경우인지 아니면 키가 존재하는데 대응하는 값이 문자열인 것인지 파악 불가 #include #include #include #include #include using namespace std; optional GetVal..
-
C++ 의 클래스개념 Self Study📝/C, C++ 2023. 8. 3. 17:55
시작하기에 앞서 추상화 -컴퓨터 상에서 현실세계를 100% 나타낼수 없기에 적절하게 컴퓨터에서 처리 가능하도록 바꾸는것 >> 인스턴스 변수 = 변수, 인스턴스 메소드 = 함수 캡슐화 - 직접 인스턴스 변수의 값을 바꿀 수 없고 항상 인스턴스 메서드를 통해 간접적으로 조절하는 것 >> 객체가 내부적으로 어떻게 작동하는지 몰라도 사용가능하다. 클래스 - 객체의 설계도(구조체의 상위 호환이라고도 한다.) 구조체의 경우 기존에는 struct를 명시했어야 하지만 class가 생성되었다면 클래스 명을 사용하여 명시해주면 된다. 멤버 변수(member variable): class상에 있는 변수 멤버 함수(member function): class상에 있는 함수 private: int food; int weight ..
-
C++ 참조자 및 짚고 갈 것개념 Self Study📝/C, C++ 2023. 8. 2. 17:57
참조자의 도입 참조자: 또다른 이름이라고 컴파일러에게 알려주는 것이다. ex) int& another_a = a; >> another_a는 a의 참조자다. int형 변수의 참조자를 만들고 싶을 때 에는 int&처럼 가리키고자 하는 타입뒤에 &를 붙이면 된다. ※ another_a에 값을 대입하면 참조한 값에도 값이 변경된다. 참조자와 포인터는 상당히 유사한 개념이다. 주의할 점 레퍼런스는 반드시 처음에 누구의 별명이 될 것인지 지정해야한다. int& another_a; 이것은 불가능하다. = 으로 지정해줘야한다. int* p는 가능하다. 레퍼런스가 한번 별명이 되면 절대로 다른 것의 별명이 될 수 없다. 한 번 어떤 변수의 참조자가 되버린다면, 더이상 다른 변숮를 참조할수 없게 된다. int &anoth..
-
구조체(Struct)개념 Self Study📝/C, C++ 2023. 8. 1. 17:27
1. 개요 - 구조체에 대한 얘기를 항상 들어왔지만 정확한 구조체에 대한 개념보다는 이런 기능을 하는것이겠지 하며 지레 짐작하며 사용해왔다. 자세한 개념에 대해서 알아보고자 한다. 2. 구조체란? C언어의 배열안에 여러 정보를 삽입하고 싶으나 원소의 타입은 모두 동일해야한다. 구조체를 이용하면 다양한 데이터 타입을 쓸수 있다.. 구조체는 정의할 때 모든 원소의 타입을 명시해 주어야한다. 구조체 내부에 있는 값들은 멤버라고 한다. 구조체 정의에서는 변수를 초기화 할수 없다. . 을 이용하여 원소에 접근할 수 있다. 3. 구조체 포인터 구조체 포인터에 접근하기 위해서는 언제나 괄호로 감싸주어야 한다. or '->' 를 사용해준다 ex)에 있는 괄호 표현방식을 더 간단히 하기 위해 (*ptr).a = 1이라는..
-
메모리 동적할당개념 Self Study📝/C, C++ 2023. 7. 31. 17:53
1. 개요 - C언어는 다른 C# , Java, Python과는 다르게 가비지컬렉터를 소스를 작성하는 프로그래머가 직접 해야 합니다. 따라서, 동적할당을 어떻게 하는지에 대해서 알아보자 2.C 언어 동적할당 배열을 정할 때 그 크기는 언제나 컴파일 시간에 확정되어야 한다. 그러나, 뭐든 값은 일정한것만 있는 것이 아니기에 '충분히 크게' 잡는 경향이 있는데 이럴 경우 메모리 낭비되는 경우가 허다하다. 낭비되는 자원을 막기 위해서는 값과 맞게 설정해 주는 것인데 이것에 대한 방법이 동적 메모리 할당이다. malloc() -memory allocation 이 함수는 에 정의되어 있기 때문에 추가해주어야한다. 이 함수는 인자로 전달된 크기의 바이트 수 만큼 메모리 공간을 만든다. 즉, 메모리 공간을 할당하게 ..
-
C언어 포인터개념 Self Study📝/C, C++ 2023. 7. 31. 16:11
1. 개요 - C언어를 시작하고 배움에 있어 C언어의 꽃은 포인터라는 얘기를 많이 들었다. 그러하여, 기초가 탄탄하여야 배움에 막힘이 없을거라 판단이 되었고 확실히 알고 넘어가보자 2.포인터 1Byte = 8 Bit 주소란? 프로그램 동작 시 컴퓨터는 여러 방들에 있는 데이터를 필요로 하게 된다. 따라서, 어떤 방에서 데이터를 가져올 지 구분하기 위해 각 방에 고유의 주소를 붙였다. ex)아파트에서 집들 호수를 구분하는 것과 비슷 포인터란? - 메모리 상에 위치한 특정한 데이터의 (시작)주소값을 보관하는 변수 포인터 정의 (포인터에 주소값이 저장되는 데이터의 형) * (포인터 이름); &연산자 데이터 주소값을 알기 위해서는 &연산자를 사용한다. => &연산자는 오직 피연산자가 1개인 연산자이며, 단항 연..