<div>아래의 이진탐색 소스에서 <span style="font-size:9pt;line-height:1.5;"> </span><span style="font-size:9pt;line-height:1.5;">cout<<"Dict의 크기"<<sizeof(Dict)<<endl;의 값이 8이 나오더군요.</span></div> <div><span style="font-size:9pt;line-height:1.5;">클래스에서 포함된 함수는 함수포인터가 아니면 사이즈와 상관 없으니까 제외하면 </span></div> <div> <div> struct node</div> <div> {</div> <div> int key;</div> <div> };</div> <div> struct node *a;</div> <div> int n;</div></div> <div><span style="font-size:9pt;line-height:1.5;">결국 </span>위의 node구조체의 변수 a의 포인터와 int형 n변수, 그리고 node형에 포함된 int key변수 이 세개의 사이즈가 Dict의 크기인데</div> <div>근데 왜 <span style="font-size:9pt;line-height:1.5;">Dict의 사이즈가 </span><span style="font-size:9pt;line-height:1.5;">8이 나오나요?</span></div> <div>12가 나오는 게 정상이 아닌가요?</div> <div>어째서 <span style="font-size:9pt;line-height:1.5;"> struct node안에 포함된 int형의 key변수는 Dict형의 전체사이즈에서 제외되어야 하는지 알고 싶네요.</span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div>#include <iostream.></div> <div>#include <time.h></div> <div>#include <stdlib.h></div> <div>using namespace std;</div> <div>const int N=10;</div> <div><br></div> <div>class Dict</div> <div>{</div> <div><br></div> <div>public:</div> <div> Dict(int max)</div> <div> {</div> <div> a=new node[max];</div> <div> n=0;</div> <div> }</div> <div> ~Dict()</div> <div> {</div> <div> delete a;</div> <div> }</div> <div> int search(int search_key);</div> <div> void insert(int v);</div> <div>private:</div> <div> struct node</div> <div> {</div> <div> int key;</div> <div> };</div> <div> struct node *a;</div> <div> int n;</div> <div><br></div> <div>};</div> <div>int Dict::search(int search_key)</div> <div>{</div> <div><br></div> <div> int left=1;</div> <div> int right=n;</div> <div> int mid;</div> <div> while(right>=left)</div> <div> {</div> <div> mid=(left+right)/2;</div> <div> if(a[mid].key==search_key)</div> <div> return mid;</div> <div> if(a[mid].key>search_key)</div> <div> right=mid-1;</div> <div> else left=mid+1;</div> <div> }</div> <div> return -1;</div> <div>}</div> <div>void Dict::insert(int v)</div> <div>{</div> <div> a[++n].key=v;</div> <div>}</div> <div>void init(int key[],int search_key[])</div> <div>{</div> <div> int i,index,temp[N+1];</div> <div> for(i=1;i<=N;i++){</div> <div> key[i]=i;</div> <div> search_key[i]=i;</div> <div> temp[i]=0;</div> <div> }</div> <div> srand(time(NULL));</div> <div> for(i=1;i<=N;i++)</div> <div> {</div> <div> index=rand()%N+1;</div> <div> if(temp[index]==0)</div> <div> temp[index]=search_key[i];</div> <div> else{</div> <div> while(temp[index]!=0)</div> <div> index=(index%N)+1;</div> <div> temp[index]=search_key[i];</div> <div><br></div> <div> }</div> <div> }</div> <div> for(i=1;i<=N;i++){</div> <div> search_key[i]=temp[i];</div> <div><br></div> <div> }</div> <div>}</div> <div>int main()</div> <div>{</div> <div> Dict d(N+1);</div> <div> cout<<"Dict의 크기"<<sizeof(Dict)<<endl;</div> <div> </div> <div> cout<<"d의 크기"<<sizeof(d)<<endl;</div> <div> int i,result,key[N+1],search_key[N+1];</div> <div> double start_time;</div> <div> init(key,search_key);</div> <div> for(i=1;i<=N;i++)</div> <div> d.insert(key[i]);</div> <div> start_time=clock();</div> <div> for(i=1;i<=N;i++)</div> <div> {</div> <div> result=d.search(search_key[i]);</div> <div> if(result==-1||key[result]!=search_key[i])</div> <div> {</div> <div> cout<<"탐색오류"<<endl;</div> <div> }</div> <div> }</div> <div> cout<<"이진 탐색의 실행시간(N"<<N<<"):"<<clock()-start_time<<endl;</div> <div> cout<<"탐색 완료"<<endl;</div> <div>}</div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.