본문 바로가기

프로그래밍/C++

C++ Vector 무한배열 사용법

'무한배열'을 들어보았는가? 지금까지 객체지향을 맛보지 못한 사람이라면, 들어보지 못했을 수도 있다. 무한한 배열이라니, 원래 배열은 크기가 딱딱 정해져 있고 넘어가면 프로그램에 문제가 생기는 것 아닌가?


당연히 맞는 말이다. 배열의 크기를 넘어선 데이터를 저장하면 문제가 생기는 것은 반박할 수 없는 엄연한 사실이다. 하지만, 이런 배열의 불편한 점을 보완해줄 뭔가는 있기 마련이다. 마치 동적 영역 지정 같이 말이다.


이런 형식을 사용하면 프로그래밍 작업의 효율을 높일 수 있고 일단 편하다. 그렇기에 C++를 하면서, 다른 언어를 공부하면서도 알아야 편한 정보 중에 하나다.


그럼, C++에서의 동적배열, 무한 배열 Vector에 대해 알아보자.




사용법 / 기본 정보


C++에 들어있는 기능이다. 그러면 어디에 들어있겠는가? 아마 예상이 맞았을 것이다. 바로 std namespace에 들어가 있다. 다만, 사용하기 위해서는 vector를 include해줄 필요가 있다.(#include "vector")



std::vector<타입> 변수명;


vector는 C++의 각종 타입들을 저장할 수 있게 해 두었다. (제네릭으로 어떤 타입이던 입력해놓을수 있다.) 그래서 꺾쇠 안에는 타입을 쓴 후, 변수 지정답게 뒤에 변수명을 써주면 끝이다.


여기서 조금 특이한 점이 있는데, 초기화를 해주지 않아도 안의 함수나 여러 기능들을 사용할 수 있다는 것이다. 물론 초기화를 해주지 않으면 아무것도 없는 상태의 배열이 나온다. {}.



주요 함수들


vector 타입의 멤버함수들은 여러가지 많은데, 그중 대표적으로 많이 쓰이게 될 몇가지를 골라 보겠다.


 push_back(x)

 끝에 x를 추가한다.

 pop_back()

 마지막 값을 지운다.

 back()

 마지막 값을 반환한다.

 front()

 첫번째 값을 반환한다.

 size()

 배열의 크기를 반환한다.


정말 '많이' 쓰이게 될 함수들이다.


예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
#include "iostream"
#include "vector"
 
using namespace std;
 
int main() {
    vector<string> array;
    array.push_back("HELLO");
    cout << array[0].c_str() << endl;
    cout << array.size() << endl;
    system("pause");
 
    return 0;
}
cs


예제는 간단하게 짰다. array라는 이름의 string 배열(벡터)를 만들고, 비어있는 array에 HELLO를 추가한다. 그 다음에는 0번째 항목, 배열의 크기를 각각 출력한다.



출력이 정상적으로 되는 것을 볼 수 있다.



글을 마치며.


C++의 vector는 정말 참신한 개념이다. Vector의 함수들이나 다른 것들은 생각보다 많다. 쓰다보면 유용한 것도 꽤 있을 수 있으니, 자세한건 API 페이지를 직접 찾아가서 보는 것도 나쁘지 않겠다.


그럼 이상 마치겠다.

'프로그래밍 > C++' 카테고리의 다른 글

C++ 익명함수 사용법  (0) 2017.10.28