[*]
Код: Выделить всё
getFirstElem(MyContainer const&, void*)Код: Выделить всё
getNextElem(MyContainer const&, void*)< /code>: выводит следующий элемент контейнера. < /li>
< /ol>
Я хочу кодировать общую функцию, которая проходит через элементы этого контейнера C через функции интерфейса, упомянутые выше, и скопировать их значения в контейнер C ++ (например, Std :: Vector < /code>). далеко: < /p>
template
void
copy_container(MyContainer const &cont, OutputIterator first) {
typename std::iterator_traits::value_type elem;
if(getFirstElem(cont, &elem)) {
do {
*first = elem;
++first;
} while(getNextElem(cont, &elem))
}
}
< /code>
Приведенный выше пример работает нормально с нормальными итераторами. Тем не менее, он не может компилировать с выходными итераторами (например, copy_container (cont, std :: Back_inserter (myVector)); Причина в том, что STD :: iterator_traits :: value_type результаты в void в случае аргумента Arare is it ityer. />
есть ли способ заставить эту общую функцию работать и для выходных итераторов? v4.4.7).
Подробнее здесь: https://stackoverflow.com/questions/251 ... t-iterator
Мобильная версия