помесь map и vector
От: Аноним  
Дата: 02.10.07 03:42
Оценка:
Подскажите, плиз, как лучше решить проблему:

Нужен контейнер хранящий пары значений (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.

Надеюсь не сильно сумбурно получилось.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.