Data_structure

(Data_Structure) Vector

K_Hyul 2023. 12. 7. 18:41
728x90

Vector는 C++ 표준 라이브러리에서 동적 배열

즉, 크기가 고정되지 않은 배열을 의미한다.

(Array와 비슷하게 생각해도 된다.)

 

한 번에 한 타입만 저장이 가능하다.

저장공간보다 많은 양의 데이터를 추가시킬 경우 현재 보유하고 있는 메모리의 두 배만큼 할당한다.

이때, Vector는 메모리가 연속적인데 연속적으로 할당하지 못할 경우 다른 공간 모든 원소를 하나하나 복사한다.

이때 속도가 느려지기에 메모리 할당을 중간에 바꾸게 된다면 이 부분을 조심해야한다.

 

Vector의 ADT를 보면

push_back(): 벡터의 끝에 요소를 추가한다.

pop_back(): 벡터의 끝에서 요소를 제거한다.

at(): 주어진 인덱스에 해당하는 요소를 return

size(): 벡터에 저장된 요소의 개수를 return

front(): 벡터의 첫 번째 요소를 return == at(0)

back(): 벡터의 마지막 요소를 return == at(size()-1)

empty(): 벡터가 비어있는지 여부를 확인

clear(): 모든 요소를 제거하고 size를 0으로 만든다

resize(): 벡터의 크기를 지정한 크기로 변경하고 필요한 경우 기본 값으로 초기화

insert(): 주어진 위치에 data를 삽입

erase(): 주어진 위치의 data를 제거

 

 

아래는 vector를 사용한 예시이다.

#include <iostream>
#include <vector>

using namespace std;

int main() {
    // 벡터 생성
    vector<int> myVector;

    // push_back으로 요소 추가
    myVector.push_back(10);
    myVector.push_back(20);
    myVector.push_back(30);

    // 벡터의 크기 출력
    cout << "Vector size: " << myVector.size() << "\n";

    // 벡터의 모든 요소 출력
    cout << "Vector elements: ";
    for (int i = 0; i < myVector.size(); ++i) {
        cout << myVector[i] << " ";
    }
    cout << std::endl;

    // 벡터의 첫 번째 요소 출력
    cout << "First element: " << myVector.front() << "\n";

    // 벡터의 마지막 요소 출력
    cout << "Last element: " << myVector.back() << "\n";

    // 벡터가 비어있는지 확인
    if (myVector.empty()) {
        cout << "Vector is empty." << "\n";
    } else {
        cout << "Vector is not empty." << "\n";
    }

    // 벡터의 두 번째 요소 변경
    myVector[1] = 25;

    // 변경된 벡터의 모든 요소 출력
    cout << "Modified vector elements: ";
    for (int i = 0; i < myVector.size(); ++i) {
        cout << myVector[i] << " ";
    }
    cout << "\n";

    return 0;
}
728x90

'Data_structure' 카테고리의 다른 글

(Data_structure) Deque  (1) 2023.12.07
(Data_Structure) Priority Queue  (1) 2023.12.07
(Data_structure) Queue  (1) 2023.12.07
(Data_Structure) BFS (Breadth-First Search)  (1) 2023.12.07
(Data_Structure) DFS (Depth-First Search)  (0) 2023.12.07