목록Development/C & C++ (45)
컴공생의 다이어리

auto 키워드 auto 키워드는 선언된 변수의 초기화 식을 사용하여 해당 형식을 추론하도록 컴파일러에 지시한다. 즉, auto 키워드를 사용하면 초깃값의 형식에 맟춰 선언하는 인스턴스(변수)의 형식이 '자동'으로 결정된다. 이것을 타입 추론(type inference)이라고 한다. 이 기능은 생성 시 변수를 초기화할 때만 작동한다. 초기화 값을 사용하지 않고 생성된 변수는 이 기능을 사용할 수 없다. 이유는 초기화된 값을 기준으로 자료형을 선택하기 때문이다. 아래에서 다양한 예제로 auto관련해서 다뤄보겠다. auto 사용 예시 아래는 int형 변수 a와 float형 변수 b의 합을 auto키워드를 통해 sum변수에 저장하고 출력한 것이다. #include using namespace std; int ..

자료 구조는 크게 순차 자료 구조와 연결 자료 구조로 구분할 수 있다. 순차(Sequntial) 자료 구조 순차 자료 구조는 모든 데이터를 단일 메모리 청크에 연속하여 저장한다. 데이터가 메모리에 저장될 때, 저장 시작 위치부터 빈자리 없이 순서대로 저장된다. 이 그림을 보면 각각의 데이터는 int형으로 모두 같은 타입이다. 첫번째 원소의 메모리 주소를 시작 주소(Base Address)라고 하는데 그림에서의 시작 주소는 100이다. 주어진 모든 데이터의 타입이 같기 때문에 두번째 데이터는 시작 주소(100)+sizeof(int)로 104이다. 세번째 데이터는 시작 주소(100)+2*sizeof(int)로 108이다. cf) int 타입은 4byte 자료 구조에서는 배열의 전체 크기에 관계없이 모든 데이..
STL(Standard Template Library) STL은 템플릿을 사용해서 만들어진 클래스와 함수들의 모임이다. 링크드 리스트 클래스, 동적 배열 클래스, 정렬 함수, 검색 함수 등 일반적으로 많이 사용하는 클래스와 함수들이 포함된다. STL의 장점 개발자들 모두 동일한 코드를 사용한다는 점(표준)과 전문가들이 제작해 효율적이고 안전하다는 등의 장점이 있다. STL 컨테이너 STL 컨테이너는 다수의 정보를 담는 역할을 하는 클래스이다. 자주 사용하는 STL의 컨테이너 클래스는 아래의 표와 같다. 클래스 내용 vector 동적인 배열(동적으로 원소의 개수를 조절할 수 있는 배열) list 링크드 리스트 deque 배열과 링크드 리스트의 장점을 모아놓은 클래스 배열만큼 원소에 접근하는 시간이 빠른 동..
클래스 템플릿(Class Template) 함수를 템플릿으로 정의했듯이 클래스도 템플릿으로 정의가 가능하다. 그리고 이렇게 정의된 템플릿을 가리켜 클래스 템플릿이라고 하며, 이를 기반으로 컴파일러가 만들어 내는 클래스를 가리켜 템플릿 클래스라 한다. 클래스 템플릿은 객체 생성 시 명시적으로 결정하고자 하는 자료형을 선언해야 한다. #include using namespace std; template class Data{ T data; public: Data(T num) { data=num; } void setData(T num) { data=num; } T getData(void) { return data; } }; int main(){ Data a(0);//T를 int로 간주하고 객체 생성 a.setD..

함수 오버로딩은 함수의 구현부는 동일하지만, 인자만 다른 여러 함수를 중복하여 선언한다는 문제가 있다. int ADD(int a, int b){ return a+b; } double ADD(double a, double b){ return a+b; } 템플릿(template) 템플릿은 함수 오버로딩에서 발전된 형태이다. //T라는 이름(type name)에 대해서, 다음에 정의하는 대상을 템플릿으로 선언 template T ADD(T a, T b){ return a+b; } int main(){ cout
아래 표와 같이 private를 어떤 속성으로 상속하든 결과는 private가 되며, protectec는 상속되는 속성에 따라 private 또는 protected가 된다. 그리고 public 또한 상속되는 속성에 따라 private, protected, public이 됨을 알 수 있다. 부모 클래스의 속성 상속 속성 상속시 속성 private private private private protected private private public private protected private private protected protected protected protected public protected public private private public protected protected public..
#include #include int main() { std::istringstream ss("123"); int x; ss >> x; std::cout > x; return x; } int main() { std::cout
#include #include #include class Human { std::string name; int age; public: Human(const std::string& name, int age) : name(name), age(age) {} std::string get_info() { return "Name :: " + name + " / Age :: " + std::to_string(age); } friend std::ofstream& operator
아래 코드를 통해 'test.txt'라는 파일에 "파일에 쓰기!"라는 문자를 저장할 수 있다. #include #include #include int main() { // 파일 쓰기 준비 std::ofstream out("test.txt"); std::string s; if (out.is_open()) { out
파일 전체를 한 번에 읽기 파일 전체를 한 번에 읽으려면 아래와 같은 코드를 사용하면 된다. #include #include #include int main() { // 파일 읽기 준비 std::ifstream in("test.txt"); std::string s; if (in.is_open()) { // 위치 지정자를 파일 끝으로 옮긴다. in.seekg(0, std::ios::end); // 그리고 그 위치를 읽는다. (파일의 크기) int size = in.tellg(); // 그 크기의 문자열을 할당한다. s.resize(size); // 위치 지정자를 다시 파일 맨 앞으로 옮긴다. in.seekg(0, std::ios::beg); // 파일 전체 내용을 읽어서 문자열에 저장한다. in.read(..