Можно ли преобразовать пару в пару ?

Итак, у меня есть умный итератор, который имитирует карту const_iterator, и ему необходимо внутренне построить возвращаемый тип.Очевидно, я хотел бы сохранить пару в моем классе итератора (поскольку мне нужно его изменить), но в то же время я бы хотел, чтобы функции разыменования представляли пара (на самом деле это была бы пара констант & и const pair * соответственно ). Единственное решение, которое я придумал до сих пор, - это динамически выделять новую пару каждый раз, когда меняет значение, на которое указывает мой класс итератора. Излишне говорить, что это не лучшее решение.

Я также пробовал * const_cast > (& value) , где значение объявлено как пара .

Любая помощь будет принята с благодарностью (равно как и осознание того, что это невозможно).

РЕДАКТИРОВАТЬ

Для любопытных: в итоге я сохранил пару p в своем классе итератора. Чтобы изменить пару, я изменяю два элемента отдельно на основе базового итератора ( map :: const_iterator it ), const_cast с ключом, чтобы он мог быть измененным, например:

*const_cast<Key*>(&p.first) = it->first;
p.second = it->second;

Не то решение, которым я очень доволен, но оно выполняет свою работу, и методы разыменования удовлетворены, потому что я храню что-то правильного типа, на которое они могут ссылаться.

5
задан masaers 2 December 2011 в 08:05
поделиться