Получение спецификатора типа для объекта

Я пытаюсь написать шаблонную функцию, которая будет принимать контейнер STL и отображать все вхождения элементов в нем и их количество. Я планирую использовать карту, выполнить итерацию по контейнеру и либо добавить новый элемент, если он не существует, либо увеличить количество вхождений этого элемента.

Объявление:

template < typename Container_t >
void findOccurrences (const Container_t& inContainer);

Мой вопрос: могу ли я каким-то образом получить спецификатор типа элемента, который содержит контейнер? Поэтому, когда я создаю свою карту, ключевым значением будет элемент в inContainer . Примерно так:

map < typeid ( * inContainer.begin()), int > occurrences;

Или мне придется изменить свой шаблон на что-то вроде этого:

template < typename Container_t , typename Element_t >
void findOccurrences ( const Container_t & inContainer , Element_t dummy )
{
  map < Element_t , int > occurrences;
}

Спасибо

5
задан Mat 26 June 2011 в 19:51
поделиться