본문 바로가기
반응형

프로그래밍 언어106

stable_sort()와 sort() 차이 알아보기 배열이나 vector 원소를 정렬하는데 있어서 자주 사용되는 sort() C++에는 stable_sort()라는 것도 있다. 📌 [C++] sort() 함수란? [C++] sort() 함수란? 개발할 때나 코딩 테스트에서 많이 활용되는 정렬(Sort) 단순히 정렬된 원소를 요구하는 경우도 많지만 상황에 따라서는 정렬 기법을 응용해서 문제 접근해야 하는 경우도 많다. [C++] 에서도 이러 zoosso.tistory.com 둘의 가장 큰 차이는 원소 순서를 보장 여부로 「안정성」이지 않을까 싶다. • sort() 기존 순서를 보장하지 않는다. • stable_sort() 기존 순서를 보장한다. ex) ID를 기준으로 비교 정렬하지만 동일한 ID인 경우 sort() 결과가 예상가 다르게 나올 수 있다. 예시.. 2022. 1. 1.
[C/C++] memmove() 함수 사용과 예제 함수 원형 void* memcpy (void* dest, const void* src, size_t num) • dest: 데이터가 복사될 곳 (void* 형) • src: 복사될 데이터가 위치하는 곳 (void* 형) • num: 복사할 크기 (byte 단위) → src 에 있는 영역에서 num 바이트 만큼 dest 영역으로 옮긴다. 중간에 버퍼를 이용하기 때문에 메모리를 옮길 때 dest 영역과 src 영역이 겹처도 문제가 없다. → dest 영역과 src 영역 크기는 num 이상이어야 한다. → 필요한 헤더 파일: 혹은 반환 값 dest (void* 형) 예제 (정수 배열 복사) #include #include int main() { int src[2][3] = { {1, 2, 3}, {4, 5, .. 2021. 11. 28.
[C/C++] memcpy 사용 방법 함수 원형 void *memcpy(void *dest, const void *src, size_t N); •dest: 데이터가 복사되는 영역 (To) •src: 복사할 원본 데이터 (From) •N : 복사할 크기 (Byte) → memcpy(복사 받는 메모리, 복사할 메모리, 크기); src 메모리 영역에서 dest 메모리 영역으로 N byte 만큼 복사 * 필요한 헤더파일: 혹은 반환 값 dest 포인터 (void* 형) 예제 (2차원 배열 복사) #include #include int src[][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int dest[3][3]; int main() { // 복사 전 for (int i = 0; i < 3; ++i) { for (in.. 2021. 11. 24.
[C/C++] do-while 문 형태와 활용 do-while문은 안에 있는 코드를 조건식과 상관없이 한 번 무조건 실행됩니다. 그 후에 조건식을 확인하고 반복 여부가 결정된다. 그렇기에 아래 코드는 i < 0 이지만 한 번 printf 가 실행되고 조건문에 걸려 반복문을 빠져나오게 된다. #include int main() { int i = 0; do { printf("안녕 세상아 [%d]\n", i); i++; } while (i < 0); } 중괄호 안에서 변화식을 조건문에 맞춰서 작성하지 않으면 반복이 끝나지 않고 무한 루프 되므로 주의! 위 코드를 while 문으로 변경한다면 아래와 같다. 물론 반복문 자체가 실행되기 위해서는 조건문 수정이 필요하다. 😒 #include int main() { int i = 0; printf("안녕 세상아 .. 2021. 11. 22.
[C] printf 서식 %d int 부호 있는 10진수 정수 %u unsigned int 부호 없는 10진수 정수 %o unsigned int 부호 없는 8진수 정수 %x, %X unsigned int 부호 없는 16진수 정수 %f float, double 10진수 방식의 부동소수점 실수 %e, %E float, double e 또는 E 방식의 부동소수점 실수 %g, %G float, double 값에 따라 %f와 %e 사이에서 선택 %c char 문자 %s char * 문자열 %p void * 포인터의 주소 값 %n int * 포인터의 주소 값 %lu unsigned long 부호없는 long %llu unsigned long long 부호없는 long Refernece - [BOJ] 1550 16진수 2021. 9. 14.
[C++] [STL] fill 함수 사용해보기 template void fill(ForwardIterator first, ForwardIterator last, const T& val); - first 채우고자 하는 iterator 시작위치 (first 포함된다.) - last: 채우고자 하는 iterator 끝위치 (last 포함되지 않는다.) - val: [first, last)까지 채우고자 하는 값 대입을 위해 operator= 연산자가 사용된다. * 헤더파일 #include 필요 예제 코드 fill은 보통 배열(array)나 벡터(vector)에 주로 이용합니다. 예제- - Array #include #include using namespace std; int main() { // 0 0 0 0 0 int arr[5] = {}; // 7 7 .. 2021. 9. 11.
[C/C++] memset 사용시 주의사항 먼저 memset 함수의 기본적인 사용방법을 읽어보는 것을 추천드립니다. [C / C++] memset 함수 사용 memset 함수는 memory + set 으로 특정 메모리 공간에 지정한 값을 채워준다. 함수 원형 void* memset(void* ptr, int value, size_t num); → memset (시작 포인터, 설정할 값, 크기) ① void* ptr .. zoosso.tistory.com 예제 1 #include #include const int MAX_N = 2; int main() { int arr[MAX_N]; memset(arr, 1, sizeof(int) * MAX_N); for (int i = 0; i < MAX_N; i++) { printf("%d ", *(arr + .. 2021. 9. 11.
[C / C++] memset 함수 사용 memset 함수는 memory + set 으로 특정 메모리 공간에 지정한 값을 채워준다. 함수 원형 void* memset(void* ptr, int value, size_t num); → memset (시작 포인터, 설정할 값, 크기) ① void* ptr 메모리 시작 주소 ② int value 설정하고자 하는 값 int 타입으로 받지만 내부에서는 unsigned char (1 byte)로 변환 ③ size_t num 메모리 크기 (바이트 단위) 주로 sizeof() 를 활용한다. 반환 - 성공하면 첫번째 인자로 들어간 ptr 반환 - 실패하면 NULL 반환 헤더파일 (C) #include 혹은 #include (C++) #include 예시 [예제 1] #include #include const i.. 2021. 9. 11.
[C] typedef enum 활용 [C] 열거형 타입 enum 이란?을 먼저 읽고 오시는 것을 권장 드립니다. enum 타입은 typedef 키워드와 주로 함께 사용된다. typedef는 타입의 별칭을 생성하고 실제 타입 이름 대신 별칭을 사용할 수 있게 한다. #include typedef enum Season { SPRING, SUMMER, FALL, WINTER. }SEASON; int main(void) { SEASON birthday = FALL; printf("%d\n", birthday); } typedef로 명시적 타입을 사용하면서 버그와 에러를 줄일 수 있다. #include #include using namespace std; typedef enum Season { SPRING, SUMMER, FALL, WINTER, .. 2021. 9. 11.
[C] 열거형 타입 enum 이란? enum 타입이란? #include enum Day { Sunday, Monday = 10, Tuesday, Wednesday, Thursday = 20, Friday, Saturday }; int main() { printf("Sunday : %d \n", Sunday); printf("Monday : %d \n", Monday); printf("Tuesday : %d \n", Tuesday); printf("Thursday : %d \n", Thursday); printf("Friday : %d \n", Friday); } - 초기값을 지정하지 않으면 첫번째 원소의 값 = 0 - 중간에 초기값을 별도로 설정할 수 있다. (나머지 원소도 그에 맞춰 1씩 증가) - 마지막 닫는 중괄호 「 } 」 뒤에 세.. 2021. 9. 10.
반응형