Подскажите, плиз, как лучше решить проблему:
Нужен контейнер хранящий пары значений (Name=Value), удовлетворяющий трем условиям:
1. Быстрое получение value по name.
2. Иногда требуется возможность пройти по элементам контейнера в том же порядке, в каком они были добавлены в контейнер
3. Желательно при запросе отсутствующего name кидать исключение, а не добавлять пару с value по умолчанию. Но можно обойтись
без этого.
Пока вижу такое решение, но, так как я новичок в STL, думаю есть более красивое и правильное.
class CValue
{ CString m_strName;
CString m_strValue;
int m_nSortOrder;
}
map<CString, CValue*> mapValues;
Первое условие выполняется, трудоемкость вроде такая же как у map.
Второе:
перегнать(отсортировать) указатели, например в вектор, в соответствии с m_nSortOrder. Как кстати правильно это сделать ?
Не нравиться, как минимум дублирование Name (ключ в map, член CValue), но если перегонять указатели в вектор, надо же потом как-то получить Name.
Надеюсь не сильно сумбурно получилось.