컴퓨터/C++
C++ STL 라이브러리에서 제공하는 vector클래스는 쉽게 원소를 추가 및 제거할 수 있는 가변 배열의 형태를 가진 컨테이너입니다. 즉 쉽게 동적으로 메모리를 할당하여 데이터를 관리할 수 있습니다.
엄밀히 따지자면, 배열과는 약간의 차이가 있지만 연속적으로 데이터를 저장하고 관리하기에 효과적입니다.
본문에서는 vector를 직접 사용하는 예제를 보며 특징을 알아보도록 합시다.
vector클래스를 사용하기 위해서 라이브러리를 추가해 주도록 합시다.
#include<iostream>
#include<vector>
#include<algorithm>
vector클래스를 사용하기 위해 선언을 해줍시다. 다양한 형태로 선언이 가능합니다.
using namespace std;
int main()
{
vector<int> vector1; //기본적인 선언
vector<int> vector2(10); // 10개의 원소가 0으로 초기화 된 선언
vector<int> vector3(10, 1); // 10개의 원소가 1로 초기화 된 선언
vector<int> vector4(vector2); // vector2를 복사하여 선언
return 0;
}
vector클래스의 메서드를 이용하여 손쉽게 추가 및 제거가 가능합니다.
//원소의 추가 가장 뒤에 추가됩니다.
vector1.push_back(10);
vector1.push_back(5);
vector1.push_back(1);
//원소의 제거 가장 뒤의 원소가 제거됩니다.
vector1.pop_back();
STL 라이브러리에서는 이터레이터라는 컨테이너를 접근할 수 있는 방법을 제공한다고 했습니다.
vector클래스 또한 컨테이너이므로 이터레이터를 통해 원소에 접근할 수 있습니다.
메서드를 통해 제공되는 녀석들을 사용해 봅시다.
vector1.begin(); // 첫번 째 원소의 위치
vector1.end(); // 마지막 원소의 위치
vector1.insert(vector1.begin(), 100); // vector1.begin()앞에 100정수 추가
vector1.insert(vector1.begin()+1, 99); // vector1.begin()+1앞에 100정수 추가
vector1.erase(vector1.begin()); //0번째 원소 제거
vector1.erase(vector1.begin() + 2); //2번째 원소 제거
vector1.clear();
vector클래스는 배열의 형식처럼 접근 및 사용 또한 가능합니다.
vector1[0] = 3;
vector는 크게 2가지 크기를 제공합니다.
하나는 선언된 vector에 원소의 개수를 반환하고 , 다른 하나는 vector의 동적 메모리 할당된 크기를 반환합니다.
이처럼 2가지를 제공하는 이유는 vector클래스의 설계 특성상 원소를 제거하더라도 동적 할당된 메모리는 존재하기 때문입니다. 이 내용은 다른 글에서 좀 더 자세히 다루도록 하겠습니다.
vector1.size();// 원소의 크기
vector1.capacity(); //동적할당된 메모리의 크기
C++ - 배열 vector와 2차원 vector (0) | 2022.03.29 |
---|---|
C++ - STL라이브러리 piar (0) | 2022.03.17 |
C++ - STL(Standard Template Libary) (0) | 2022.03.17 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet