STL 컨테이너는 각각 자신만의 특징을 가지고 있습니다. 각 컨테이너의 특징은 성능('시간 복잡도' '공간 복잡도')
STL
여러 요소에 영향을 주기 때문에 각 컨테이너의 특징을 이해하는 것은 상당히 중요합니다. 그래야 자신의 프로그램에 맞는 적절한 컨테이너를 선택하여 사용할 수 있습니다
.

vector
의 주요 특징은 앞장에서 배운 것처럼 '시퀀스 컨테이너'이면서 '연속 메모리 기반 컨테이너'입니다
.
또 컨테이너에 데이터가 삽입될수록 메모리가 자라나게 됩니다. 연속 메모리 기반이므로 메모리가 자라나면

기존 메모리를 삭제하고 새로운 메모리를 재할당하여 사용합니다.

v.size() = 인덱스 사이즈
v.clear() =
초기화
v.capacity() =
할당된 메모리 공간 크기 보기
v.empty() =
비어있는지 확인 true/false
v.push_back(data) =
끝에 자료 추가

v.pop_back() =
끝에꺼 삭제
v.erase( v.begin() + 3) = 3
번째 내용 삭제
v.insert( v.begin()+0, "aa") = 0
번째 aa추가
v.reserve( 10 ) = capacity(
공간 크기 설정)
v.begin() =
시작위치
iterator
v.end() =
끝위치
iterator
v.swap( vector) = 
벡터간 SWAP

 

전형적 일반 벡터 생성하기
vector< Templete > v; // v
란 이름으로 < > 타입의 벡터 리스트를 생성하기


생성자를 이용한 메모리공간과 크기 확보하여 초기화 생성하기
vector<int> v(10);
v.size() // 10개의 빈공간이 생성되잇다.


간단한 예제

#include<iostream>
#include<vector>
using namespace std;

int main()
{
        vector<
int> i_list; //
벡터 변수 선언
        i_list.push_back(10);//
끝에 추가
        i_list.push_back(20);
        i_list.push_back(
30);

       
for(int i=0;i<i_list.size();i++)
               
if( !i_list.empty() )
                        cout <<
"size: " << i_list.capacity() << " content: " << i_list[i] << endl;

        i_list.erase(i_list.begin()+
1); // 1
번인덱스 삭제
        i_list.insert(i_list.begin()+1, 20); // 1
번째 인덱스에 자료 추가

        i_list.pop_back(); //
끝에꺼 삭제

        i_list.clear(); //
완전삭제
        return 0;
}


반복자를 이용한 벡터 접근하기

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    vector<
int> v;

   
for(int i = 0 ; i < 10 ; i++)
        v.push_back(i);

    vector<
int>::iterator iter;

   
for( iter = v.begin() ; iter != v.end() ; iter++)
        cout << *iter << endl;

    cout << *iter << endl;
    cout << *iter+
1 << endl;
    cout << *iter+
2 << endl;
   
return 0;
}

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    vector<int> v;

    for(int i = 0 ; i < 10 ; i++)
        v.push_back(i);

    vector<int>::iterator iter;

    for( iter = v.begin() ; iter != v.end() ; iter++)
        cout << *iter << endl;

    cout << *iter << endl;
    cout << *iter+1 << endl;
    cout << *iter+2 << endl;
    return 0;
}

 

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,