|
Тема |
става въпрос за следното [re: Paдo] |
|
Автор | zaphod (Нерегистриран) | |
Публикувано | 22.10.04 19:30 |
|
|
имаме множество еднотипни обекти в документ. работата с документа изисква селекция - нещо като селекцията на текст, обаче селекцията не е свързана, за разлика от текстовите редактори. за целта аз правя един мап, по точно това е множество, ама в мфц няма отделен обект множество, та ползвам мап. когато не се ползва втория аргумент, то си е чисто множество. та на въпроса - трябва да се извърши определена операция върху всички селектирани обекти. нормално го правя така: пускам проста итерация за всички обекти и гледам кои от тях са селектирани. така итерацията завърта толкова пъти, колкото са обектите в документа. обаче когато бройката стане голяма, да речем към 100 000, тогава става дразнещо. операции които са често използвани почват да влачат, дори когато в селекцията са само 2-3 обекта. това лесно се отстранява, като вместо обхождане на всички обекти и проверка дали са селектирани, се ползва итериране на мапа. по принцип няма проблем, мапа се итерира лесно, ама аз като напиша едно нещо повече от два пъти, почвам да мисля как мога да си спестя писането. иначе итерацията изглежда така:
for(POSITION pos=map.GetStartPosition();pos;){
map.GetNextAssoc(pos,key,FP);
// тук правя нещо си
}
та идеята ми е да натъпча в макрос горнита два реда - просто винаги са еднакви.
иначе итерацията на мапа е бърза - вътрешно данните са списък и само се мести указателя.
|
| |
|
|
|