class vs struct struct의 사용법은 다음과 같다. // 구조체 정의 struct data { int a; char b; void foo() { ... } }; // 구조체의 변수 선언 data mydata; // 함수 호출 mydata.foo(); class의 사용법은 다음과 같다. // 클래스 정의 class obj { int a; char b; void foo() { ... } }; // 클래스의 변수 선언 obj myobj; // 함수 호출 myobj.foo(); 둘 다 똑같이 멤버 변수와 메서드를 가질 수 있다. 하지만 main함수에서 호출해보면 class는 함수 호출이 되지 않는다. 왜냐하면 class는 기본 접근 지정자(access modifier)가 private이고, str..
C++
std::string::compare 함수 // string int compare (const string& str) const noexcept; // substrings int compare (size_t pos, size_t len, const string& str) const; int compare (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen = npos) const; // c-string int compare (const char* s) const; int compare (size_t pos, size_t len, const char* s) const; // buffer int compare (size_t pos..
반복자를 사용할 때 얻는 이점 컨테이너의 요소들에 직접 접근하는 대신 반복자를 사용하는 경우 얻는 가장 중요한 이득은 다음과 같다. 직접 접근하는 방식은 클래스의 캡슐화를 무너뜨린다. 반면 반복자는 컨테이너의 구현 세부사항을 외부에 노출하지 않으면서도 효율적으로 순회 할 수 있다. 반복자는 순회 과정을 단순화한다. 대부분의 반복자는 배열의 인덱스나 포인터와 비슷하게 동작하기 때문에 순회할 때는 간단한 루프를 짜 반복자를 증가시켜가며 끝나는 조건과 비교하면 된다. 번외 postincrement(i++)와 preincrement(++i) 연산자의 차이는 뭘까? preincrement 전치 증가 연산자 증가를 끝내고 난 후 피연산자의 값을 리턴. 포인터나 반복자를 증가시킨 후 그에 대한 참조를 리턴하면 됨. ..