C++ 德克迭代器错误
我有一个用于二进制搜索树实现的C++ 德克迭代器错误,c++,C++,我有一个用于二进制搜索树实现的BinNode类 当我初始化以下内容时:deque::const_iterator iter=n.begin()我收到一个错误,告诉我deque后面应该有冒号 deque是否不支持模板参数中的模板参数,或者这是某种不同的错误 以下是函数的一个片段: template <class Key, class Elem, class KEComp, class EEComp> void BST<Key, Elem, KEComp, EEComp>::
BinNode
类
当我初始化以下内容时:deque::const_iterator iter=n.begin()代码>我收到一个错误,告诉我deque后面应该有冒号
deque是否不支持模板参数中的模板参数,或者这是某种不同的错误
以下是函数的一个片段:
template <class Key, class Elem, class KEComp, class EEComp>
void BST<Key, Elem, KEComp, EEComp>::
printBranchesHelp(int branchLen, int nodeSpaceLen, int startLen, int nodesInThisLevel, const deque< BinNode<Elem>* >& n, ostream& out)
{
deque< BinNode<Elem>* >::const_iterator iter = n.begin();
for (int i = 0; i < nodesInThisLevel / 2; i++)
{
out << ((i == 0) ? setw(startLen-1) : setw(nodeSpaceLen-2)) << "" << ((*iter++) ? "/" : " ");
out << setw(2*branchLen+2) << "" << ((*iter++) ? "\\" : " ");
}
out << endl;
}
模板
无效英国夏令时::
打印分支帮助(int branchLen、int nodeSpaceLen、int starten、int nodesInThisLevel、const deque&n、ostream&out)
{
deque::常量迭代器iter=n.begin();
对于(int i=0;ideque::const_iterator
是一个依赖名称,因此需要使用typename
关键字显式将其标识为类型:
typename deque< BinNode<Elem>* >::const_iterator iter = n.begin();
或者在C++11中,您可以避开这个问题,使用auto
:
auto iter = n.begin();
Elem
是模板参数吗?如果是,您可能需要typename出列::const_iterator
Yes TartanLlama,它是。BinNode是树的节点,因此我使用一个指向节点的指针,该节点的类型为BinNode
请尝试创建一个还要建立日志。记得指出MCVE中有错误的行。你是如何声明n的?看看吧,谢谢你,塔坦。(我想你指的是deque,而不是dequeue)typename
仅仅是Elem
template参数不需要吗?@Zereges整个名称是依赖的,可以具有公开类型或非类型的专门化。
auto iter = n.begin();