본문 바로가기

IT

(23)
[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; ..
[Java] 추상클래스와 인터페이스 추상클래스와 인터페이스 추상 클래스와 인터페이스는 모두 추상화를 통해 구현을 강제하는 방법이지만, 차이가 있음 추상 클래스특정 클래스의 공통적인 특성과 행동을 정의하는데 사용상속받는 자식 클래스가 반드시 구현해야 하는 메소드를 추상 메소드로 선언함으로써, 일관된 구현을 강제할 수 있음하나 이상의 추상 메소드를 포함해야 함 (이외 변수 및 일반 메서드도 포함 가능)인스턴스를 생성할 수 없음 (상속을 통해 자식 클래스에서 구현해야 함)추상 클래스를 상속받은 하위 클래스에서는 추상 메서드를 반드시 구현해야 하지만, 일반 메서드는 구현할 필요 없음다중 상속 불가abstract class 클래스이름 { ... abstract 반환타입 메소드이름(); ...} 인터페이스인터페이스는 클래스가 구현해야..
[Java] 동일성(identity)과 동등성(equality) 동일성(identity)과 동등성(equality)동일성 (identity)비교 대상의 두 객체의 메모리 주소가 같음을 의미하는 것동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미자바에서 동일성은 비교연산자 == 로 확인Number number1 = new Number(1);Number number2 = number1;System.out.println(number1 == number2); // true동등성(equality)동등성은 비교 대상의 두 객체가 논리적으로 동일한 값을 나타내고 있는지를 검사동등성에서 두 객체의 메모리 주소는 중요하지 않음.즉, 동일함은 동등함을 보장하지만, 반대로 동등함은 동일함을 보장하지 않음자바에서 동등성을 비교하기 위해 equals 와 hashCode 를..