목록전체 글 (52)
dev-miri
반복자 std::forward_list 반복자와 std::vector, std::array 반복자의 차이를 알아볼 것이다. 앞에서 배열과 포인터를 설명할 때 반복자에 숫자를 더하여 사용한 것을 기억할 것이다. 반복자는 포인터와 비슷하지만, STL 컨테이너에 대해 공통의 인터페이스를 제공한다. 반복자를 이용한 연산은 어떤 컨테이너에서 정의된 반복자인지에 따라 결정된다. 백터와 배열에서 사용하는 반복자는 기능 면에서 가장 유연하다. 백터와 배열은 연속된 자료구조를 사용하기 때문에 특정 위치의 원소에 곧바로 접근할 수 있다. 이러한 반복자를 임의 접근 반복자(random access iterator)라고 한다. 그러나 std::forward_list의 경우 기본적으로 역방향으로 이동하는 기능을 제공하지 않으며..
서론 지금까지 살펴본 배열, 벡터 같은 연속된 자료 구조에서는 데이터 중간에 자료를 추가하건 삭제하는 작업이 매우 비효율적이다. 그래서 연결 리스트와 같은 형태의 자료 구조가 등장한다. 많은 응용 프로그램에서는 자료 구조 중간에 삽입 도는 삭제 작업을 필요로 하기 때문이다. 기본적으로 연결 리스트를 구성하려면 포인터를 하나 가지고 있어야 하고, new와 delete 연산자를 이용하여 메모리를 할당하고 해제할 수 있어야 한다. 이러한 기능을 구현하는 것이 그리 어렵진 않지만 자칫 잘못하면 찾기 어려운 버그를 양산할 수 있기 때문에, C++에서는 C 스타일 배열에 대한 래퍼 클래스 std::array를 제공하듯이 기본적인 연결 리스트에 대한 래퍼 클래스인 std::forward_list 클래스를 제공한다. ..
앞서 살펴본 바와 같이 std::array는 C 스타일 배열의 향상된 버전이다. 그러나 std::array는 실제 응용 프로그램 개발에서 유용하게 사용할 수 있는 몇몇 기능을 제공하지 않는다는 단점이 있다. std::array의 크기는 컴파일 시간에 결정되는 상수여야 한다. 따라서 프로그램 실행 중에는 변경할 수 없다 크기가 고정되어 있어서 원소를 추가하거나 삭제할 수 없다. std::array의 메모리 할당 방법을 변경할 수 없다. 항상 스택 메모리를 사용한다. 이러한 문제를 std::vector가 해결할 수 있다. std::vector - 가변 크기 배열 제목에서 알 수 있듯이 std::vector는 C 스타일 배열 또는 std::array가 가지고 있는 가장 두드러진 문제 중 하나인 '고정 크기' ..
std::array std::array는 메모리를 자동으로 할당하고 해제한다. std::array는 원소의 타입과 배열 크기를 매개변수로 사용하는 클래스 템플릿입니다. 다음은 크기가 10인 int 타입의 std::array 배열을 선언한 후, 원소 값을 설정하는 예제 코드이다. //크기가 10인 int 타입 배열 선언 std::array arr1; //첫 번째 원소를 1로 설정 arr1[0] = 1; //arr2의 모든 원소 : [1, 2, 3, 4] std::array arr2 = {1, 2, 3, 4}; std::array는 C 스타일 배열과 똑같은 방식으로 배열 원소에 접근할 수 있는 [ ] 연산자를 제공한다. [ ] 연산자에 접근하고자 하는 배열 원소 인덱스(index)를 지정할 경우, 빠른 동작..
왜 자료구조와 알고리즘을 공부해야 할까? 응용 프로그램을 설계할 때 가장 중요하게 고려해야 할 항목 중에 하나는 데이터 관리이다. 프로그래머는 데이터를 메모리에 저장하기 위해 여러 자료 구조를 사용할 수 있다. 응용 프로그램에서 필요한 기능을 구현하고, 동작 성능과 안정성을 확보하려면 적절한 '자료구조'를 선택하는 것이 매우 중요하다. 적절한 자료구조를 선택하는 것뿐만 아니라, 데이터 조작에 적합한 알고리즘을 선택하는 것 또한 최적의 응용 프로그램 동작을 위해 필수적이다. 연속된 자료 구조와 연결된 자료구조 서론 응용 프로그램에서 데이터를 처리하기에 앞서, 데이터를 어떻게 저장할 것인가를 결정해야 한다 . 이 질문에 대한 답은 데이터를 이용하여 수행할 작업의 종류와 작업 빈도에 따라 달라진다. 응용 프로..
서론 UMC 서버 컨퍼런스에 다녀왔다. 현직 Devops 개발자 연사님의 발표를 들었는데, 새로 접한 기술과 지식이 많아서 정리 해보고자 한다. 그 중 제일 먼저 정리해볼 것은 CI/CD 파이프라인이다. CI/CD란? CI/CD(Continous Integration/Continuous Delivery)는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법이다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(일명 "통합 지옥(integration hell)")를 해결하기 위한 솔루션이다. 특히, CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및..