'무한배열'을 들어보았는가? 지금까지 객체지향을 맛보지 못한 사람이라면, 들어보지 못했을 수도 있다. 무한한 배열이라니, 원래 배열은 크기가 딱딱 정해져 있고 넘어가면 프로그램에 문제가 생기는 것 아닌가?
당연히 맞는 말이다. 배열의 크기를 넘어선 데이터를 저장하면 문제가 생기는 것은 반박할 수 없는 엄연한 사실이다. 하지만, 이런 배열의 불편한 점을 보완해줄 뭔가는 있기 마련이다. 마치 동적 영역 지정 같이 말이다.
이런 형식을 사용하면 프로그래밍 작업의 효율을 높일 수 있고 일단 편하다. 그렇기에 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 |
---|