[C++] sort

Featured image for [C++] sort

1. sort() `sort(first, last, *커스텀비교함수)`다. first는 포함되고 last는 포함되지 않는다. 시작점 주소와 마지막 주소 + 1을 넣거나 쉽게 iterator.begin()과 iterator.end()를 넣으면 된다. 커스텀비교함수는 옵션이다. greater가 내림차순이고 less가 오름차순으로 정렬한다. 23년 9월 5일 추가 나. stable_sort cmp 함수에서 seq를 사용할 때, 같은 빈도수를 가진 값들 사이의 순서를 올바르게 유지하기 위해 seq[a] <= seq[b]로 설정했다. 하지만 이러한 … 더 읽기

[C++] fill, memset, memcpy

Featured image for [C++] fill, memset, memcpy

1. fill() 끝값은 포함하지 않고 초기화합니다!!! 2. memset() memset은 fill과는 다르게 바이트 단위로 초기화를 수행한다. 0, -1, char형의 문자 하나로 초기화 할 수 있다. (2의 보수 표기법에 따라서 11111…은 -1이 된다.) 0 또는 -1이란 값으로 초기화할 때는 memset을 사용하는 것 추천한다. 3. memcpy call by value로 복사하고 싶을 때 사용한다.

[C++] iterator

Featured image for [C++] iterator

1. iterator 반복자(iterator)는 객체 지향적 프로그래밍에서 배열이나 그와 유사한 자료 구조의 내부의 요소를 순회(traversing)하는 객체이다. C++에서의 iterator는 컨테이너(배열이나 리스트 등)에 저장되어 있는 요소의 주소를 가리키는 개체를 말하며 포인터를 일반화한 것을 말한다. 가. begin() 컨테이너의 시작 위치를 가리키는 iterator를 반환한다. 나. end() 컨테이너의 끝이 아니라! 끝 바로 다음의 위치를 가리키는 iterator를 반환한다. 다. advance(iterator, cnt) iterator를 … 더 읽기

[C++] 메모리 할당

Featured image for [C++] 메모리 할당

0. 참고자료 프로그램의 메모리 세그먼트 구조 : Code(text), Data(data, bss) Segment, Stack, Heap 프로그램을 실행하게 되면, CPU 프로세서는 보조기억장치(HDD, SDD)에 있는 프로그램 정보를 읽어… 1. 프로세스 메모리 구조와 할당 Segment 방식은 가상주소(virtual address)인 논리적 주소(logical address)를 사용한다. 프로그램에 따른 상대적 위치를 바탕으로 Offset을 더하는 방식으로 메모리의 물리적 주소(physical address)에 접근한다. 위로 갈수록 조금이라도 더 정적?이라고 … 더 읽기

[C++] 배열과 포인터

1. pointer 2. array to pointer 3. 배열 == 포인터 상수? 배열의 이름은 그 값을 변경할 수 없는 상수라는 점을 제외하면 포인터와 같습니다. 따라서 배열을 포인터 상수(constant pointer)라고 하기도 합니다. 출처 : http://www.tcpschool.com/c/c_pointerArray_relation 확인해보니 포인터 상수와 배열은 엄연히 다르다. 배열의 이름(arr)의 주소는 포인터 상수와 달리 배열의 첫 번째 요소의 주소를 가진다. 포인터 상수는 자기 자신의 … 더 읽기

[C++] pair와 tuple

1. pair & tuple pair와 tuple은 서로 다른 데이터 타입의 값들을 하나의 변수에 저장할 때 매우 유용하다. 가. 선언 make_pair와 make_tuple이 기억하기 쉬운 것 같다. 나. 접근 1) tie() 2) first, second pair의 첫 번째와 두 번째 요소에 접근하는 데 사용. 3) get<>() 각각 tuple의 첫 번째, 두 번째, 세 번째 요소에 접근하는 데 사용.

[C++] string

1. string 오버로딩된 메서드가 많기 때문에 매개변수의 종류와 수가 다를 수 있다. 가. atoi() 만약 입력받은 문자열이 “문자”라면 0을 반환. “숫자”면 숫자를 반환합니다. 나. reverse() 다. split() C++의 string은 따로 split 함수를 지원하지 않는다. 그래서 직접 만들어서 사용해야 한다. find, substr, push_back, erase을 사용해서 구현한다. delimiter 전까지 문자열을 추출해서 문자열 벡터에 집어넣는다. 그리고 문자열의 시작부터 … 더 읽기

[C++] 입력과 출력

1. 입출력 C++의 대표적인 입출력 방법 2가지에 대하여 알아보자. 가. scanf와 printf C언어에서도 배우는 방법이다. 형식을 지정해야 하는 점이 다소 번거롭다. 나. cin와 cout 우선 사용을 위해서는 **<iostream>**이라는 헤더파일을 include해야한다. 또 using namespace std도 해준다. 2. 그래서 뭐 써? 앞서 소개한 두 방법 모두 까다로운 점이 있다. 가. scanf와 printf printf는 string 타입의 문자열을 출력할 … 더 읽기

[C++] using namespace

1. using namespace? 가. namespace란 우리가 프로그래밍을 하다 보면 다양한 라이브러리를 사용하게 된다. 이때 서로 다른 라이브러리의 서로 같은 이름의 함수, 변수 … 등을 사용하게 되는 경우가 있다. 이때 이들을 구분하기 위해서 출신과 성분(?)을 밝히는 것이다. 물론 사용할 때마다 매번 밝힐 수는 없으니 전역으로 혹은 지역으로 “여기서부터는 따로 말하지 않아도 어디 어디서 온 누구로 알아먹어라”라고 … 더 읽기