C ++错误:'迭代器不是类型'

时间:2014-10-12 10:49:37

标签: c++ templates

这是我的代码:

template <typename container_type>
void transfer(container_type container, iterator begin, iterator end) {
    for (; begin != end; begin++)
        if (!element_in_container(container, *begin))
            container.insert(iterator, *begin);
}

我收到错误'iterator is not a type'

我尝试在std::之前添加container_type::iterator,但没有帮助。我尝试将模板定义为template <typename container_type<typename T> >,将迭代器定义为container_type<T>::iterator,没有运气。怎么了?

2 个答案:

答案 0 :(得分:6)

我认为你的意思是以下

template <typename container_type>
void transfer( container_type container, typename container_type::iterator begin, 
                                         typename container_type::iterator end) {

考虑到在任何情况下你的函数都是错误的,因为在容器中插入一个元素后,迭代器可能无效。

答案 1 :(得分:1)

  

我尝试在迭代器之前添加std::container_type::,但没有   帮助

container_type::iterator是一个从属名称,因此您需要使用typename关键字将其视为类型(typename container_type::iterator)。深度解释here