본문 바로가기

공부/Programming Language10

C++ STL - 연관 컨테이너 저번에 이어서 이번에는 연관 컨테이너에 대해 간단히 살펴봤다. 연관 컨테이너(Associative Container) 연관 컨테이너에 대해서 Key-Value의 구조를 갖는다고 언급한 적이 있었다. 그렇기에 연관 컨테이너는 시퀀스 컨테이너와 달리 특정 키 값을 통해 그 키에 해당하는 값을 반환하는 역할을 수행한다. 이러한 Key-Value 구조로 연관 컨테이너가 제공할 수 있는 정보값은 다음과 같다. 특정 키가 컨테이너에 존재 하는가? 특정 키에 대응하는 값(value)이 무엇인가? 위키피디아에 의하면 연관 컨테이너에는 set, multiset, map, multimap 등이 있다고 한다. 이 중에서도 1번 질문에 대답할 수 있는 기능을 가진 컨테이너는 set과 multiset, 2번 질문에 답할 수 있.. 2021. 6. 8.
C++ STL - 시퀀스 컨테이너 C++로 알고리즘을 하겠다고 생각한 후부터 늘 STL을 살펴봐야지, 살펴봐야지 하고 드디어 살펴보게 되었다. 실제로 알고리즘 문제를 풀 때 얼마만큼 적용해볼 수 있느냐가 문제일텐데... 우선은 아는 것이 중요하니 개념부터. 언제나 늘 보던 그 씹어먹는 C++강좌와 위키피디아, 그리고 일부 C++관련 게시물을 참고했다. C++ STL(Standard Template Library) 해석하면 'C++ 표준 라이브러리'라고 불리는 이 라이브러리는 4가지의 라이브러리로 이루어져 있다고 한다. 알고리즘 컨테이너 반복자 함수자 보통 STL이라고 하면 위의 3개(알고리즘, 컨테이너, 반복자) 위주로 사용되는 듯 하다. 실제로 알고리즘 문제 풀이를 살펴볼 때도 많이 봤던 익숙한 얼굴들이고... 그중에서도 오늘 훑어본 .. 2021. 6. 4.
C++ 5일차 (※ 개인 정리를 위한 것이므로, 이해한 내용 생략다수 + 불친절함 주의) string 클래스 기존 C에서 문자열을 다루는 것은 어려웠다. 두 문자열이 같은지를 확인하기 위해서도 별도의 함수를 사용해야 했다(strcmp). 그러나 C++에서 제공하는 표준 string 클래스를 사용하면 이러한 함수의 사용 없이 문자열을 편리하게 이용할 수 있다. #include #include int main() { std::string s = "cake"; std::cout 2021. 5. 13.
C++ 4일차 하루 공부 양이 뒤죽박죽이라 어느 정도 내용이 쌓이면 적으려고 하고 있다. (※ 개인 정리를 위한 것이므로, 이해한 내용 생략다수 + 불친절함 주의) explicit 'explicit' 이란 '분명한, 명쾌한' 등의 의미를 갖는 단어이다. 이 친구가 하는 역할을 정리하려면, '명시적 변환'과 '암시적 변환'에 대해 대강이나마 정리할 필요가 있다. C++의 컴파일러는 똑똑하다. 그렇기 때문에 프로그래머가 짠 내용을 참고해서 자기 나름대로 생각하고 사용자가 편하도록 알아서 처리할 때가 있다. 변환 또한 그러하다. class CustomString { private: char * str; public: CustomString(const char* string); /*...*/ }; /* ... */ void .. 2021. 5. 7.
C++ 3일차 주말 내내 코딩이 너무 하기 싫어서 반쯤 놀아댄 결과 별로 공부한 내용이 없다. 그러다 최근 글을 봤는데 글을 무슨 쓰다 말았어서 OTL... 못 쓴 내용까지 복습하면서 다 정리할 것. (※ 개인 정리를 위한 것이므로, 이해한 내용 생략다수 + 불친절함 주의) 소멸자 (Destructor) 소멸자란 대충 생성자와 반대의 작업을 수행하는 함수라고 볼 수 있겠다. 그렇기에 생성자가 객체를 생성하는 데 사용되는 함수라면, 소멸자는 객체가 소멸될 때 호출되는 함수이다. 소멸자가 필요한 이유는 다음과 같다. #include #include class Test { int num; char * word; public: Test(int n, char * name); }; Test::Test(int n, char * n.. 2021. 5. 3.
C++ 2일차 어제 미처 (시간이 너무 오래 걸려서) 클래스와 오버로딩에 대한 내용을 쓰지 못했다. 오늘 조금 더 생성자와 소멸자에 대해 봤기 때문에 적기로. (※ 개인 정리를 위한 것이므로, 이해한 내용 생략다수 + 불친절함 주의) 객체 객체지향 프로그래밍의 핵심적인 개념. 일단은 그 개념을 "현실 세계에 존재하는 어떠한 개념들을 표현하기 위한 데이터들의 모음(구조)" 라고 생각하고 있다. 객체지향 프로그래밍을 학습할 때 있어, 중요하게 배우는 특징들이 몇 가지 있다(n년 전 자바 교과목에서 열심히 공부했었다). 여기서 되새겨보는 특징은 아래와 같았다. 추상화(Abstraction) : 현실의 것을 컴퓨터의 세계로 가져오는 과정에서, 불필요한 것을 없애고 중요한 것만을 남기는 과정이다. 현실 세계의 정보는 제대로 표.. 2021. 4. 30.