본문 바로가기

배열12

[c++] lowe_bound, upper_bound, rotate lower_bound() : 타겟 이상(타겟과 같으면 포함)인 요소의 첫 위치를 찾음 lower_bound(탐색시작위치, 탐색끝내는 위치, 타겟) upper_bound() : 타겟 초과(같으면 포함 안함)인 요소의 첫 위치를 찾음 upper_bound(탐색시작위치, 탐색끝내는 위치, 타겟) lower, upper모두 타겟을 찾지 못할 시, end() 의 위치를 가리킴 - 반복자이므로 처음부터 한 번 쭉 훑고가기때문 **rotate() : 2차원 배열의 경우 90도 단위로 회전을 시키거나, 1차원 배열을 옆으로 몇칸씩 밀때 사용한다 rotate(시작반복자, 첫 위치로 올 반복자, 종료 반복자) 2022. 6. 13.
배열 제어 함수 fill() : 특정 위치의 배열을 초기화한다 fill(시작위치, 끝나는 위치, 초기화 값) // 끝나는 위치 = 마지막 요소 뒤의 위치 memset() : 배열 전체를 초기화 한다 memset(초기화 대상 배열, 초기화 값, 배열의 크기) memcpy() : 배열의 값을 다른 위치의 메모리에 복사한다 (=배열 값을 다른 배열에 복사) 배열의 값을 수정 시 원본을 온전히 남기고 싶을때, 배열 temp 에 원본 배열 a를 복사하면 a를 수정해도, temp 에 담은 a의 데이터를 복사해와서 다시 a를 만들어 복구할 수 있다 memcpy(붙여넣을 곳의 배열명, 복사할 배열명, sizeof(복사할 배열명) // a를 수정하는 로직을 구현 후, 다시 a를 원상복귀 할때 아래와 같이 사용한다 memcpy(temp,.. 2022. 6. 8.
iterator 반복자 iterate 반복하다 iterator 반복자 반복자란 반복하는 다음 데이터를 가리키는 배열의 일종이다. 배열이고 가리키니 포인터로서의 성질도 있다 반복자란 기능적으로 배열의 부분집합에 해당된다 배열처럼 연속되는 데이터를 다룰때 반복해서 넘어가서 가리키는 배열의 그 기능만 가져온 것이다 왜 기능도 더 많은 배열을 쓰지 반복자를 따로 쓸까? 배열로 쉬운 일이 있고, 반복자를 써야 메모리의 소모를 줄일 수 있기 때문이다 1. 배열을 사용하여 작업시, 작업에 필요한 모든 데이터들을 데이터를 올려놓고 사용해야만 하기 메모리의 소모가 크지만 반복자를 사용할때는 현재 사용하는 데이터 하나만 메모리에 올려서 사용하면 되기 때문에 메모리 사용을 줄일 수 있다 2. 배열의 경우, 배열에서 값을 가져올 시 인덱스만 알면 .. 2022. 6. 8.
구조체, typedef c언어에서는 같은 속성을 가진 변수들을 모아 메모리 상에서 연속되는 주소값을 갖는 하나의 데이터 묶음으로 표현한다 이를 구조체 structure type 라고 한다 구조체는 메모리 상에서 연속되는 주소값을 갖는다 메모리에서 연속되는 주소값을 갖는 것은 배열이므로, 구조체를 변수들의 배열로 볼수도 있다 변수를 저장가능하므로 배열, 주소값, 포인터도 저장가능하다 구조체 안에 구조체가 없으면 (중복 구조체가 아니면) 1차원 배열과 같다고 볼 수 있고, n번의 중복을 가진 구조체라면 n차원 배열과 같다고 볼 수 있다 (=내부 변수로 배열을 갖는 경우) 배열의 성질을 갖기에 연속되는 주소값을 이용해서 포인터로 다룰수도 있을 것이다 구조체를 만들때는 일반적으로 다음과 같은 방법으로 선언, 초기화한다 strutct .. 2022. 6. 6.