C++ 에서 표준 템플릿 라이브러리인 STL(Standard Template Library)의 가장 기본적인 시퀀스 컨테이너인 vector에 대해서 설명하겠습니다.
기본적으로 배열과 비슷한 부분이 많이 있습니다.
#include<vector> 헤더파일을 포함시켜 주시고 사용하면 됩니다.
선언을 할때 vector<int> v와 같은 방식으로 선언을 하며 크기를 vector<int> v(10) 과 같이 임의 지정할 수도 있습니다.
vector에 저장할 수 있는 크기가 있으며 그것을 초과 할 경우 vector에 인자들을 복사하여 다른 메모리에 할당하면서 크기를 늘립니다.
1. 기본 선언과 인자 추가 , 탐색
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include<iostream> #include<vector> using std::cout; using std::endl; using std::vector; int main() { //선언 vector<int> v; //가장뒤에 인자추가 v.push_back(5); // [5] v.push_back(15); // [5, 15] v.push_back(25); // [5, 15, 25] v.push_back(1); // [5, 15, 25, 1] //탐색 for (unsigned int i = 0; i < v.size(); i++) { cout << v[i] << endl; } cout << "----------"<<endl; //탐색2 iterator 이용하기 vector<int>::iterator iter; for (iter = v.begin(); iter != v.end(); iter++) { cout << *iter << endl; } return 0; } |
2. size() 와 clear()
1 2 3 4 5 6 7 8 9 10 11 12 | int main() { vector<int> v; v.push_back(-11); v.push_back(-22); v.push_back(33); //사이즈 측정 및 초기화 함수 cout << v.size() << endl; // 3 출력 v.clear(); // vector 내용 초기화 cout << v.size() << endl; // 0 출력 return 0; } |
3. 중간에 인자 넣기( insert())
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | int main() { vector<char> v; v.push_back('a'); v.push_back('b'); v.push_back('d'); v.push_back('e'); //b 다음에 c 삽입하기 vector<char>::iterator iter; for (iter = v.begin(); iter != v.end(); ++iter) { if (*iter == 'b') { //b찾기 v.insert(iter+1, 'c'); //b다음에 c 삽입하기 break; } } //결과 출력 for (iter = v.begin(); iter != v.end(); ++iter) { cout << *iter << endl; } return 0; } |
4. 인자 삭제하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | int main() { vector<double> v; v.push_back(1.1); v.push_back(3.3); v.push_back(-1.3); v.push_back(11); v.push_back(-5); //음수 제거하기 vector<double>::iterator iter; for (iter = v.begin(); iter != v.end(); ) { if (*iter < 0) { // 음수 찾기 iter = v.erase(iter); // 인자 삭제, 삭제 후 다음 인자 반환 } else { ++iter; } } //결과 출력 for (iter = v.begin(); iter != v.end(); ++iter) { cout << *iter << endl; } return 0; } |
'C, C++' 카테고리의 다른 글
C, C++ 에서 동적 메모리의 할당(malloc, new)과 해제(free,delete) 원리 (0) | 2018.04.30 |
---|---|
포인터 배열 VS 배열 포인터 차이 및 예제 (0) | 2018.04.30 |
[c/c++] memset()을 이용한 배열에 값을 모두 0또는 -1로 초기화 (0) | 2018.04.08 |
C++ STL 두 Vector 중복 인자 제거 함수 (0) | 2018.03.31 |
C, C++ 프로그램 실행 시간 측정 (1) | 2018.03.29 |