这是我的代码:
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
,没有运气。怎么了?
答案 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。