구조체와 클래스의 차이점 C++에는 여러 데이터 집합을 담을 수 있는 대표적인 방법이 두 가지가 있는데 구조체(struct)와 클래스가 바로 그것이다. 둘이 역할은 비슷해보이는데, 둘의 차이점은 무엇일까? 접근 제한자 - struct는 public, class는 private 일단 기본 접근 제한자가 다르다. 기본 접근 제한자란 해당 구조체 혹은 클래스를 선언하고, 명시적으로 접근 제한자를 설정하지 않았을 때 기본적으로 주어지는 멤버의 접근 제한자를 의미한다. 그래서 struct를 생성했을 때, 접근 제한자를 아무것도 쓰지 않는다면 자동으로 모든 멤버가 public으로 처리된다. 반대로 class를 생성했을 때는 기본적으로 private하게 주어진다. struct UserData { int ID; // ..
iterator, 왜 사용할까? iterator의 개념 먼저 C++로 코딩을 하신다고 하면, 반복자 iterator에 대해서 꼭 아시는게 좋습니다. iterator는 C++98 이전부터 있어왔던 포인터의 일종입니다. 매우 강력한 기능이고, 의외로 C++을 사용할 때 C와 다르게 포인터를 사용할 일이 정말 특이한 경우가 아니라면 거의 없는데, iterator는 정말 많이 사용합니다. iterator에서 가장 많이 사용하는 메소드는 begin()과 end()인데, 각각 컨테이너의 시작점, 그리고 끝점 + 1 칸을 리턴합니다. (그림 출처: cppreference vector begin, end) end()가 가장 끝점이 아닌, 가장 끝점에서 한 칸 더 나아간 위치를 리턴한다는 것을 주의하십시오. 그리고 it..
C++에서 쓰레드 개수 구하기 C++11 이후 C++11에서 지원하는 라이브러리를 이용한다면 쉽게 쓰레드 개수를 구할 수 있다. thread 라이브러리의 std::thread::hardware_concurrency 메소드를 이용하자. hardware_concurrency()는 현재 시스템의 쓰레드 개수를 반환한다. 만약 쓰레드 개수를 알 수 없다면, 0을 반환한다. std::thread::hardware_concurrency 는 이식 가능한 (포터블)한 코드로써 리눅스, 맥os, 윈도우에서 모두 사용 가능하다. static unsigned int hardware_concurrency() noexcept; 사용 예시 #include #include int main() { const auto n = std:..