글쓴이: 익명 사용자 / 작성시간: 수, 2002/04/24 - 9:05오후
unsigned int i[] = {1,3,2,8};
이 있습니다. 여기서 배열 i 의 값들중 3 인값의 키를 어떻게
알 수있는지 궁금합니다. bsearch 는 위의 배열을 소트를 해야
하기 때문에 값 3 의 키값이 변경이 되서 안되고,, 결국에는
for 문으로 돌리면서 체크를 해야 하는 방법외에는 없는지요?
배열의 수가 35000 개가 넘기 때문에 for 문으로 돌리는 것도
좀 그렇군요.
Re: C 의 1차원 배열에서 key 값을 구하려면?
안녕하세요 ...
쓸데없는 얘기일지도 모르지만 혹시 그냥 아예 35000개를 잡아놓으면 어떨
런지요? 검색시간은 무조건 1일텐데...
그냥 한번...
즐거운 하루 되시기 바랍니다.
Re: C 의 1차원 배열에서 key 값을 구하려면?
키 값을 알아내기 위한 용도로써 배열이라는 자료구조가 별로지요. 차라
리 해쉬테이블을 구현해서 쓰는 것이 좀 귀찮지만 더 빠르지 않을까요?
어쩔 수 없이 배열을 써야한다면 역시 일일이 찾아보는 수 밖에는 없을
것 같은데요... 정렬해서 bsearch도 못한다면 -_-;;
Re: STL의 map을 써보세요.
예를 들어
map freq;
freq["key"] = 1;
Re: C 의 1차원 배열에서 key 값을 구하려면?
일단 해쉬가 가장 좋은 방법 같구요..
해쉬를 안 쓰시고 꼭 배열을 쓰셔야 한다면,
그리고 배열이 한번 초기화후에 변경되지 않는다면
참조용 배열을 하나 더 만들어서 참조용 배열을 소트해
놓고 참조용 배열에서 검색해서 원래배열의 인덱스를
구하시는 것이 어떨까요?
배열이 중간에 변경될 필요가 있다고 하면
배열 변경하는 코드를 매크로나 함수로 만드셔서
참조용 배열도 함께 변경하도록 하고요..