이번에 STL의 vector를 남용(?)하는 수준까지 사용하고 있습니다 ㅋ 많이 사용하고 있고 그 벡터 안의 내용을 탐색하는 부분도 많습니다.
제가 궁금한 것은 탐색시 속도 관련인데요. vector를 탐색하는 방법은 두 가지가 있는걸로 알고 있습니다.
첫번째 방법은 사이즈를 구해 배열처럼 탐색하는 방법.
int iSize = m_vecBPArray.size();
CLocationBP * pBP ;
for ( int i = 0 ; i < iSize ; ++i )
{
pBP = m_vecBPArray[ i ] ;
}
두번째 방법은 iterator를 사용하여 탐색하는 방법.
for(BPARRAYitor itor = m_vecBPArray.begin();itor != m_vecBPArray.end();++itor){
CLocationBP *temp_bp = (CLocationBP *)*itor;
}
1. 두 방법 중에 어떤게 더 빠를까요??
2. 각 각 장단점이 있을까요?
#include <stdio.h>
#include <vector>
#include <time.h>
#include <conio.h>
using namespace std;
#define MAX_SIZE 100000000
void main()
{
vector<int> vi(MAX_SIZE);
vi[(MAX_SIZE)-1] = 2;
vector<int>::iterator pvi;
clock_t start;
getch();
start = clock();
for(pvi = vi.begin() ; pvi != vi.end() ; ++pvi)
{
if( (*pvi) == 2 )
cout << "iterator를 사용해 순회한 시간" << clock() - start << endl;
}
getch();
start = clock();
for( int i = 0 ; i<vi.size() ; ++i)
{
if ( vi[i] == 2)
cout << "사이즈를 이용해 순회한 시간" << clock() - start << endl;
}
}
결과) (도스 콘솔 복사를 어떻게 하더라-_-;)
iterator = 1016
사이즈 = 390
한없이 초보이지만 저도 궁금해서 그냥 코딩해 보았습니다.... size를 이용해서 배열처럼 순회하는 것이 더 빠르다고 나오네요. 왜인지는 묻지 마세요(...) 밑의 분 태클 받겠습니다.