ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [STL] vector 생성자, 함수 및 iterator 사용법
    Programming/C++ 2020. 5. 1. 00:53

    C++에서 사용되는 벡터(vector)는 배열과 유사한 자료구조지만 자동 크기 조절과 객체의 추가 삭제를 제공한다

    크기가 가변적이거나 객체의 추가 및 삭제가 자주 일어날 때, 동적인 상황에서 자주 사용한다😲

     

    사용 시 <vector>헤더 파일을 추가하고, using namespace std;를 표기해주어야 한다

    vector<data-type> var_name 으로 선언한다

     

    생성자
    • vector v : 빈 vector 생성
    • vector v (n) : 기본값으로 초기화된 n개의 원소를 가진 vector 생성
    • vector v (n, x) : x값으로 초기화된 n개의 원소를 가진 vector 생성
    • vector v (v2) : v2 vector의 복사본 생성

     

    자주쓰는 멤버함수
    • v.assign(n, x) : v에 x값으로 n개의 원소 할당
    • v.at(i) : i번째 원소 참조( = v[i]와 쓰임이 같으며, 해당 벡터의 원소를 반환)
    • v.push_back(x) : 벡터의 마지막에 x 삽입
    • v.pop_back() : 벡터의 마지막 원소 삭제
    • v.front() : 맨 처음 원소 참조
    • v.back() : 마지막 원소 참조
    • v.clear() : 모든 원소를 제거(메모리는 유지)
    • v.size() : 벡터의 원소 개수 반환
    • v.empty() : v가 비었는지 반환(비었다면 1 return)

     

    iterator는 벡터의 객체를 가리키는 반복자 형식을 나타낸다. 

    주로 vector<data-type>::iterator name 으로 선언한다

     

    자주쓰는 iterator 이용 함수
    • v.begin() : 첫번째 원소를 가리키는 iterator 반환
    • v.end() : 마지막의 다음 iterator 반환(ex. n-1개가 들어있는 vector라면 n번째를 반환)
    • v.insert(p, x) : p(iterator)가 가리키는 위치에 x값을 삽입하고 그 위치의 iterator 반환(인자가 iterator p,b,e 세 가지일 경우 p가 가리키는 위치의 iterator 구간 [b,e) 원소를 삽입)
    • v.erase(p) : p(iterator)가 가리키는 위치의 원소를 제거 후 다음 위치의 iterator 반환(인자가 iterator b,e 두 가지인 경우 [b,e) 구간의 원소를 제거)

     

    + vector의 size와 capacity의 차이점 👉 size는 벡터에 들어간 원소의 개수, capacity는 벡터에 할당된 공간의 크기를 나타낸다. 따라서 capacity는 2^n의 값을 가진다.

     

     

    사용 예제 : 

    #include <iostream>
    #include <vector>
    using namespace std;
    int main() {
    	vector<int> v;
    	v.assign(5, 0);	//0,0,0,0,0 할당
    
    	for (int i = 0; i < v.size(); i++)
    		cout << v.at(i) << ' ';	
    	cout << '\n';
    
    	v.clear();
    	if (v.empty())	//clear했기 때문에 1반환
    		cout << "Empty\n";
    
    	for (int i = 1; i <= 6; i++)
    		v.push_back(i);	//1~6까지의 원소 삽입
    	v.pop_back();	//마지막 원소 제거(6)
    
    	cout << "Front: " << v.front()<<'\n';
    	cout << "Back: " << v.back() << '\n';
    	//처음과 마지막 원소 출력
    
    	return 0;
    }

    결과👻 : 

    0 0 0 0 0
    Empty
    Front: 1
    Back: 5

     

    사용예시2: 

    #include <iostream>
    #include <vector>
    using namespace std;
    int main() {
    	vector<int> v;
    	for (int i = 1; i <= 6; i++)
    		v.push_back(i);	//1~6까지의 원소 삽입
    
    	vector<int>::iterator it;
    	for (it = v.begin(); it != v.end(); it++)
    		cout << *it << ' ';
    	cout << '\n';
    	//iterator를 이용한 원소 출력
    
    	it = v.begin() + 2;
    	v.insert(it, 0);	//3번째 원소 위치에 0 삽입
    	it = v.begin() + 3;
    	v.erase(it);	//4번째 원소 삭제(3)
    
    	for (it = v.begin(); it != v.end(); it++)
    		cout << *it << ' ';
    	cout << '\n';
    
    	return 0;
    }

    결과🧚‍♀️ :

    1 2 3 4 5 6
    1 2 0 4 5 6

     

Designed by Tistory.