목록Development (561)
컴공생의 다이어리
웹사이트는 크게 아래와 같이 3가지 요소(HTML, CSS, JS)로 구성된다. HTML(Hyper Text Markup Language) 하이퍼 텍스트 마크업 언어 하이퍼 텍스트 : 참조(하이퍼링크)를 통해 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트 마크업 언어 : 문서의 구조를 표현하는 역할 웹페이지를 만들기 위하여 사용하는 언어 웹페이지에서 제목, 이미지, 동영상, 문단, 표, 등을 정의하고 그 구조와 의미를 부여하는 정적 언어 웹의 구조를 담당 CSS(Cascading Style Sheets) 캐스캐이딩 스타일 시트 캐스캐이딩 : '계단식, 위에서 아래로 흐르는'을 의미 스타일 시트 : 글꼴의 크기, 모양, 컬러, 문단 설정 등 미리 정의해 스타일로 만들었다가 웹 문서의 본문에서 그 스..
reserve(n) 함수 reserve 함수는 필요 없이 메모리가 재할당 되는 것을 방지한다. 이 함수를 사용함으로 인해 재할당 횟수 를 최소화 시켜준다. 컨테이너 용량을 최소 n크기 만큼 잡아놓고 쓰기 때문에 그 용량을 넘지 않는 이상 재할당을 발생하지 않는다. resize(n) 함수 resize 함수는 컨테이너 개수를 무조건 n으로 맞추고 더 넣거나 넣지 않거나 하더라도 size()는 무조건 n개로 설정된다. 할당된 개수보다 요소가 더 많을 경우 끝에 있는 요소는 버려진다. shrink_to_fit() 함수 여분의 메모리 공간을 해제하는 용도로 사용된다. 이 함수를 호출하면 벡터의 용량이 벡터 크기와 같게 설정된다. 벡터 크기가 더 이상 변경되지 않을 때 사용하면 유용한다. www.yes24.com/..
std::vector는 std::array나 c/c++에서 지원하는 배열의 문제 중 하나인 고정크기 문제를 해결한다. 배열의 경우 한번 정해지면 고정이라 수정하기가 어렵지만 벡터는 동적 배열 구조 클래스이기 때문에 초기화 과정에 데이터의 크기를 제공하지 않아도 된다. 예를들어 배열의 경우 크기를 10으로 선언하면 10이 최대이며 더 늘릴 수가 없기 때문에 초기에 넉넉히 공간을 잡아줘야 한다. 하지만 벡터의 경우 처음에 크기를 10으로 선언해도 나중에 필요에 따라서 추가하거나 줄일 수 있다. vector의 선언 및 초기화 아래는 벡터(vector)를 선언하고 초기화하는 방법이다. vector 변수명 벡터 생성 vector 변수명(숫자) 숫자만큼 벡터 생성 후 0으로 초기화 vector 변수명(숫자, 변수1..
std::array c++의 std::array는 메모리를 자동으로 할당하고 해제하며, 원소의 타입과 배열 크기를 매개변수로 사용하는 클래스 템플릿이다. 아래는 int타입의 std::array 배열을 선언한 후, 원소 값을 설정하거나 화면에 출력하는 코드이다. #include #include using namespace std; int main() { //크기가 3인 int 타입 배열 생성 std::array arr1; arr1[0] = 1;//첫번째 원소를 1로 설정 std::cout
for문은 배열을 반복할 때 편리하고 유연한 방법을 제공하지만, 조금 복잡하고 실수로 인해 오류가 발생하기 쉽다. C++에서는 범위 기반 for문(range-based for statement)이라는 새로운 유형의 루프를 도입하여 더 간단하고 안전하게 배열 등의 모든 요소를 반복하는 방법을 제공한다. 범위 기반 for문(range-based for statement) for(element_declaration : array) statement; 범위 기반 for문은 위와 같은 문법 형태를 가진다. 루프는 각 array의 요소를 반복해 element_declaration에 선언된 변수에 현재 배열 요소의 값을 할당한다. 최상의 결과를 얻으려면 element_declaration이 배열 요소와 같은 자료형이..
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