Click here to Skip to main content
15,922,696 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Handling Stack Overflow Pin
Zac Howland27-Sep-06 11:31
Zac Howland27-Sep-06 11:31 
AnswerRe: Handling Stack Overflow Pin
Stephen Hewitt27-Sep-06 14:12
Stephen Hewitt27-Sep-06 14:12 
AnswerRe: Handling Stack Overflow Pin
Shog927-Sep-06 19:03
sitebuilderShog927-Sep-06 19:03 
AnswerRe: Handling Stack Overflow Pin
ShilpiP27-Sep-06 20:03
ShilpiP27-Sep-06 20:03 
QuestionFast keyword Search through CSortedArray?? anyone? Pin
Greg Ellis27-Sep-06 9:50
Greg Ellis27-Sep-06 9:50 
AnswerRe: Fast keyword Search through CSortedArray?? anyone? Pin
David Leyva27-Sep-06 10:06
David Leyva27-Sep-06 10:06 
GeneralRe: Fast keyword Search through CSortedArray?? anyone? Pin
Greg Ellis27-Sep-06 10:15
Greg Ellis27-Sep-06 10:15 
GeneralRe: Fast keyword Search through CSortedArray?? anyone? Pin
Steve S27-Sep-06 21:49
Steve S27-Sep-06 21:49 
If I understand correctly, you have a list of ordered elements, and a partial match. Binary search will help, but won't be exactly what you want.

To do something similar, I use a binary search which does a length restricted string comparison to find an element which matches, and then backs up to find the first match. For my application this approach is fine, since I only have a few items in each such grouping. Your mileage may vary.

However, a better approach, which someone has already suggested, might be to have a small array of indices into the array, keyed by first letter. Essentially something like this:


typedef struct index
{
TCHAR chr;
int start;
} INDEX;
CArray<INDEX, INDEX&>> ix;

INDEX in;
ix.RemoveAll();
in.chr = _T('\0');
in.start = -1;
for(i = 0; i < nElements; i++)
{
// get first char of this item...
chr = ....;
if (in.chr!=chr)
{
// make a new index entry
in.chr = chr;
in.start = i;
ix.Add(in);
}
}
in.chr = _T('\0');
in.start = nElements;
ix.Add(in);

To do your search, look in the ix array for a matching first character, get the start index from the matching entry, and the stop index from the next entry Smile | :)
This gives you a smaller space to do additional matching if necessary.

Steve S
Developer for hire

AnswerRe: Fast keyword Search through CSortedArray?? anyone? Pin
Zac Howland27-Sep-06 10:20
Zac Howland27-Sep-06 10:20 
AnswerRe: Fast keyword Search through CSortedArray?? anyone? Pin
Waldermort27-Sep-06 15:18
Waldermort27-Sep-06 15:18 
AnswerRe: Fast keyword Search through CSortedArray?? anyone? Pin
Stephen Hewitt27-Sep-06 20:40
Stephen Hewitt27-Sep-06 20:40 
QuestionClearing the edit box in ccombobox Pin
lctrncs27-Sep-06 9:30
lctrncs27-Sep-06 9:30 
QuestionRe: Clearing the edit box in ccombobox Pin
David Crow27-Sep-06 10:48
David Crow27-Sep-06 10:48 
AnswerRe: Clearing the edit box in ccombobox Pin
lctrncs27-Sep-06 11:38
lctrncs27-Sep-06 11:38 
QuestionRe: Clearing the edit box in ccombobox Pin
David Crow28-Sep-06 2:44
David Crow28-Sep-06 2:44 
AnswerRe: Clearing the edit box in ccombobox Pin
lctrncs27-Sep-06 11:42
lctrncs27-Sep-06 11:42 
GeneralRe: Clearing the edit box in ccombobox Pin
David Crow28-Sep-06 2:46
David Crow28-Sep-06 2:46 
GeneralRe: Clearing the edit box in ccombobox Pin
lctrncs28-Sep-06 3:54
lctrncs28-Sep-06 3:54 
GeneralRe: Clearing the edit box in ccombobox Pin
David Crow28-Sep-06 4:07
David Crow28-Sep-06 4:07 
GeneralRe: Clearing the edit box in ccombobox Pin
lctrncs28-Sep-06 7:10
lctrncs28-Sep-06 7:10 
QuestionRe: Clearing the edit box in ccombobox Pin
David Crow28-Sep-06 7:44
David Crow28-Sep-06 7:44 
AnswerRe: Clearing the edit box in ccombobox Pin
lctrncs28-Sep-06 10:15
lctrncs28-Sep-06 10:15 
GeneralRe: Clearing the edit box in ccombobox Pin
David Crow28-Sep-06 10:34
David Crow28-Sep-06 10:34 
GeneralRe: Clearing the edit box in ccombobox Pin
lctrncs28-Sep-06 12:46
lctrncs28-Sep-06 12:46 
QuestionRe: Clearing the edit box in ccombobox Pin
David Crow29-Sep-06 2:40
David Crow29-Sep-06 2:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.