반응형

Vector 6

[자료구조와 STL] 3. vector (배열)

2. vector (배열) STL에서 제공하는 컨테이너 중에서 C++언어에서 제공하는 배열과 가장 흡사한 컨테이너는 vector입니다. vector 내부에는 원소 형식들을 연속적인 프로그램 메모리에 보관할 수 있는 물리적 공간을 가지고 있기 때문에 변수명과 인덱스 연산자를 통해 원하는 원소를 찾을 수 있습니다. vector arr(5);for(int index = 0; index < 5; ++index){ arr[index] = index+1;} C++언어에서 제공되는 배열은 유효하지 않은 인덱스를 통해 접근하였을 때 프로그램이 터지지 않는 경우도 발생합니다. 이러면 개발 단계에서 빠르게 논리적 버그를 찾지 못하여 비용이 커지게 됩니다. 하지만 STL에서 제공하는 vector에서는 보관된 원소의 개수를 ..

4. vector 만들기 [디딤돌 자료구조와 알고리즘 with C++]

4. vector 만들기 이번에는 STL의 vector를 모델 삼아 vector를 만들어 보기로 해요. 3장에서는 vector를 사용했습니다. 그 프로젝트에서 헤더파일 포함문과 using 문만 변경하세요. //#include //#include //using std::vector; //using std::find; //using std::find_if; #include "vector.h" #include "algorithm.h" using ehlib::vector; typedef vector Genres; typedef Genres::iterator GIter; typedef Genres::const_iterator GCIter; 물론 vector.h 파일와 algorithm.h 파일을 프로젝트에 추가하..

3.1.5 vector를 인덱스 연산으로 사용 [디딤돌 자료구조와 알고리즘 with C++]

3.1.5 vector를 인덱스 연산으로 사용 vector는 확장 가능한 배열로 연속적인 메모리에 자료를 보관하는 자료구조입니다. 연속적인 메모리에 자료를 보관하기 때문에 메모리의 시작 위치에서 상대적 거리를 통해 원하는 요소를 접근하게 프로그래밍하면 접근 비용이 거의 들지 않습니다. 프로그래밍 언어에서 제공하는 배열은 거의 모두 인덱스 연산을 사용하여 배열의 원소에 접근하는 것을 제공하고 있습니다. STL의 vector에서도 인덱스 연산을 제공합니다. 주의할 점은 vector에는 저장소의 크기와 보관한 자료 개수를 기억하는 멤버가 있는데 인덱스 연산으로 사용할 때는 0에서 보관한 자료 개수 -1 까지 사용할 수 있어요. 따라서 보관한 자료에 접근하거나 변경할 때만 사용할 수 있다는 것입니다. 따라서 S..

3.1.4 vector에 특정 키 순으로 보관 [디딤돌 자료구조와 알고리즘 with C++]

3.1.4 vector에 특정 키 순으로 보관 이번에는 vector에 특정 키 순으로 보관하는 프로그램을 작성해 봅시다. 작성할 프로그램은 앞에서 작성한 프로그램과 같습니다. 다시 한 번 확인하기로 해요. 작성할 프로그램은 장르 관리 프로그램입니다. 장르에는 장르 번호와 장르명이 있습니다. 장르 번호와 장르명은 사용자에게 입력받습니다. 장르 번호와 장르명으로 삭제할 수 있고 검색할 수 있습니다. 그리고 모든 장르 목록을 확인할 수 있습니다. 제공할 기능을 살펴보면 장르 추가, 장르 번호로 장르 삭제, 장르명으로 장르 삭제, 장르 번호로 검색, 장르명으로 검색, 모든 장르 목록 확인이 있어요. 특정 키 순으로 보관하면 전체 목록을 확인할 때 원하는 키 순서로 보여줄 수 있어서 사용자 편의성이 높아집니다. ..

3.1.2 vector에 순차적으로 보관 [디딤돌 자료구조와 알고리즘 with C++]

3.1.2 vector에 순차적으로 보관 작성할 프로그램은 장르 관리 프로그램입니다. 장르에는 장르 번호와 장르명이 있습니다. 장르 번호는 순차적으로 부여하며 장르명은 사용자에게 입력받습니다. 장르 번호와 장르명으로 삭제할 수 있고 검색할 수 있습니다. 그리고 모든 장르 목록을 확인할 수 있습니다. 제공할 기능을 살펴보면 장르 추가, 장르 번호로 장르 삭제, 장르명으로 장르 삭제, 장르 번호로 검색, 장르명으로 검색, 모든 장르 목록 확인이 있어요. vector에 순차적으로 보관할 때는 push_back 메서드를 사용하세요. 원하는 자료를 찾을 때는 반복자를 이용하여 찾거나 find, find_if 알고리즘을 이용하여 찾습니다. 삭제할 때는 자료가 있는 위치를 찾아 erase 메서드를 사용하세요. 모든 ..

3.1 배열과 vector [디딤돌 자료구조와 알고리즘 with C++]

3.1 배열과 vector 배열은 같은 종류의 자료를 연속적인 메모리에 보관하는 자료구조예요. C언어와 C++언어에서 제공하는 배열 형식은 개발 단계에서 원소 형식과 원소의 개수를 결정하는 정적인 구조를 갖고 있죠. 이러한 배열은 개발 도중에 원소의 개수를 변경할 수 없는 한계를 갖고 있어요. 하지만 C언어와 C++언어에서도 동적으로 메모리를 할당하는 함수와 연산을 제공하여 프로그램 동작 시에 연속적인 메모리를 할당하여 자료를 관리할 수 있어요. 특히 할당한 메모리에 보관한 자료의 개수를 기억해 두었다가 꽉 차면 메모리를 재할당하여 개발자가 배열의 크기를 신경쓰지 않게 구현할 수도 있어요. STL에서 제공하는 vector는 이러한 원리로 동작하게 만든 템플릿 클래스예요. 여기에서는 STL에서 제공하는 v..

반응형