전화번호 1억개
전화번호를 숫자로 형변환합니다.
0~1억까지의 숫자가 나오겠지요.
한 번호를 한 비트로 간주하면 12,500,000 바이트가 되겠지요.
12MB 정도 됩니다.
(배열에 넣고)번호가 나올때마다 해당 비트를 1로 설정합니다.
중복이 나와도 이미 1이기 때문에 상관없습니다.
이런 방식이면 최종 추출 전화번호는 정렬되어 있고 연산속도도 개선이 가능합니다.
ps. 경우에 따라 가운데 국번 3자리, 4자리를 구분하시면 됩니다.
하안인 님이 쓰신 글 :
:
: 1억개의 데이타를 올린 후 그중에서 램덤으로 데이타를 추출하려고 합니다.
:
: vector 를 이용해서 일억개의 데이타를 넣은 후 추출하려고 하니 에러가 나네요.
:
: AcsMan A;
: for(i = 1; i <= 9999; i++)
: for(j = 1; j <= 9999; j++)
: {
: s.printf("010-%04d-%04d",i,j);
: A.phone = s;
: v_acsman.push_back(A);
: }
:
: randomize();
: i = 0;
: while(i < 400000)
: {
: j = random(v_acsman.size());
: A = v_acsman.at(j);
: v_man.push_back(A);
: v_acsman.erase(v_acsman.begin()+j);
: i++;
: }
: 1억개중 40만개를 추출하려고 하는데 vector 말고 다른것을 써야 하나요.
:
|