본문 바로가기

IT/Programming Language

(15)
[C++/STL] STL 사용법 : Container - Forward List forward_listforward_list는 단일 연결 리스트를 구현한 컨테이너입니다.list와 비슷하지만, 양방향 링크 대신에 단일 방향 링크만을 제공합니다. 주요 특징단일 방향 연결 리스트 : 각 노드는 다음 노드에 대한 포인터만 가지고 있어, 반대 방향으로는 탐색할 수 없습니다.더 적은 메모리 사용 : 각 노드에서 이전 노드에 대한 포인터가 없기 때문에, 메모리 사용량이 list보다 적습니다.비순차적 저장 : 요소가 메모리 내에서 불규칙하게 저장되며, 중간에 삽입하거나 삭제할 때 효율적입니다.랜덤 액세스 없음 : 임의 접근이 불가능하므로, 인덱스를 통해 요소에 접근할 수 없습니다. 요소에 접근하려면 순차적으로 탐색해야 합니다. 선언#includestd::forward_list flist;// ex..
[C++/STL] STL 사용법 : Container - List listlist는 이중 연결 리스트를 구현한 컨테이너입니다. 주요 특징이중 연결 리스트 : 각 노드는 이전 노드와 다음 노드에 대한 포인터를 가지고 있어, 양방향으로 탐색이 가능합니다.다이나믹 크기 : 동적으로 크기가 조정되므로, 요소가 추가될 때 자동으로 메모리를 할당하거나 해제합니다.비순차적 저장 : 메모리 내에서 요소가 불규칙하게 저장될 수 있어, 중간에 삽입하거나 삭제할 때 빠릅니다.랜덤 액세스 없음 : 임의 접근이 불가능하므로, 인덱스를 통해 요소에 접근할 수 없습니다. 요소에 접근하려면 순차적으로 탐색해야 합니다. 선언#include std::list li;// examplestd::list li1 = { 'a', 'b', 'c', 'd', 'e' }; // 크기가 5인 리스트, 초기값 등록..
[C++/STL] STL 사용법 : Container - Deque dequeDeque(Double-Ended Queue)는 양쪽 끝에서 삽입과 삭제가 가능한 컨테이너입니다. 주요 특징양방향 접근 : 양쪽 끝에서 요소에 접근할 수 있어, 삽입과 삭제가 양쪽 끝에서 가능합니다.다이나믹 크기 : 동적으로 크기가 조정되므로, 요소가 추가될 때 자동으로 메모리를 재할당합니다.랜덤 액세스 : 배열처럼 인덱스를 사용하여 요소에 접근할 수 있으며, O(1)의 시간 복잡도로 랜덤 액세스가 가능합니다.메모리 구조 : 내부적으로는 여러 개의 작은 배열로 구성되어 있어, 중간 삽입/삭제가 효율적입니다. 선언#include std::deque dq;// examplestd::deque dq = {1, 2, 3, 4, 5}; // 크기가 5인 deque, 초기값 등록std::deque dq..
[C++/STL] STL 사용법 : Container - Vector vectorstd::vector는 C++의 표준 템플릿 라이브러리(STL)에서 제공하는 동적 배열 컨테이너입니다. 1. 특징Dynamic Size: std::vector는 동적으로 크기를 조절할 수 있는 배열입니다. 요소를 추가하거나 삭제할 수 있습니다.연속된 메모리: 내부적으로 연속된 메모리 블록에 요소를 저장하며, C 스타일 배열과 유사한 성능을 제공합니다.자동 메모리 관리: 벡터는 자체적으로 메모리를 관리하며, 더 이상 사용하지 않을 경우 메모리를 자동으로 해제합니다.빠른 접근: 인덱스를 통해 O(1) 시간 복잡도로 요소에 접근할 수 있습니다.유연성: 다양한 데이터 타입을 사용할 수 있으며, 다양한 STL 알고리즘과 통합할 수 있습니다. 선언#include std::vector vec;// exam..
[C++/STL] STL 사용법 : Container - Array Arraystd::array는 C++11부터 표준 라이브러리에 포함된 STL 컨테이너로, 고정된 크기의 배열을 보다 안전하고 편리하게 사용할 수 있도록 합니다. 특징고정 크기 : std::array의 크기는 컴파일 타임에 결정되며, 런타임 동안 변경할 수 없습니다.연속된 메모리 배치 : 내부적으로 C 스타일 배열과 같이 연속된 메모리 블록에 저장되므로, 기존 배열 기반 코드와의 호환성이 좋습니다.사용 편의성: .size() 같은 멤버 함수를 통해 크기를 쉽게 알 수 있고, 범위 기반 for 루프와 같은 C++의 다양한 기능과 함께 사용할 수 있습니다.안전성: at() 멤버 함수를 통해 배열 요소에 접근하면 범위를 벗어난 접근 시 예외가 발생하여 더 안전한 코드 작성이 가능합니다.※ 왜 Array Cont..
[Java] 어노테이션 (Annotation) 에노테이션은 주석이라는 의미를 가진다.자바 소스 코드에 사이에 @ 기호를 앞에 붙여서 사용하는데, JDK 1.5 버전 이상에서 사용 가능하다. Annotation 용도컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공실행시(런타임시)특정 기능을 실행하도록 정보를 제공 내장 Annotation7개의 표준 어노테이션 중에 3개가 java.lang의 일부이며, 나머지 4개는 java.lang.annotation으로부터 가져온다. java code에 적용되는 AnnotationAnnotationDescription@Override선언한 메서드가 오버라이드 되었다는 것을 나타냄만약 상위(부모) 클래스(또는 인터페이스)에서 해당 메..
[Java] 데이터 타입, 자료형 (Data Type) 1. 기본형 (primitive type)반드시 사용하기 전에 선언(Declared)되어야 함OS에 따라 자료형의 길이가 변하지 않음비객체 타입. 따라서 null 값을 가질 수 없음 Type Bits Range of Values byte8bits-2^7 ~ 2^7-1 (-128 ~ 127)short16bits-2^15 ~ 2^15-1 (-32768 ~ 32767)int32bits-2^31 ~ 2^31-1 (-2147483648 ~ 2147483647)long64bits-2^63 ~ 2^63-1 (-9223372036854775808 ~ 9223372036854775807)float32bits0x0.000002P-126f ~ 0x1.fffffeP+127fdouble64bits0x0.00000000000..
[Java] 상속 (Inheritance) 과 인터페이스 (Interface) 상속 (Inheritance)Java에서는 클래스 간 상속의 개념이 존재상속이란 말 그대로 부모 자식 간의 상속을 의미부모 클래스를 상속 받는다는 말의 뜻은, 부모 클래스의 클래스 변수, 메서드를 재사용, 확장한다는 의미추상 클래스, 인터페이스 내용 참고 : [Java] 추상클래스와 인터페이스 클래스 상속extends 키워드 사용일반 클래스 또는 추상 클래스를 상속 받을 수 있음다중 상속 받을 수 없음부모의 메소드 그대로 사용 가능부모의 메소드를 재정의(오버라이딩) 가능생성자 규칙super(...) 메소드를 사용하여 부모 생성자 호출자식 클래스의 생성자에서는 반드시 부모 생성자(super)를 첫째줄에 선언 해주어야 함// 부모 클래스class Animal{ protected String name; ..