Случай досадный, бывают такие. Неск строк совершенно дубового кода делают все что нужно, правда ценой производительности. Но как сделать без перебора - не вижу. Выдавил из себя такое
- в каждый эл-т mData вписать его индекс и при поиске просматривать вверх от этого индекса.
Ну это будет работать пока нет удалений/вставок в mData между поисками. И сейчас их действительно нет, но увы - нет и никаких гарантий что они не понадобятся
. Да и ускорение сомнительно, напр на старте все mChannel нулевые, и придется какое-то время побегать по mData пока они не заполнятся.
Самое время заводить говнокодерскую песню о "преждевременной оптимизации", ну или там про "область применения" и.т.п. Но мы же не такие, правда?