Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 德克迭代器错误_C++ - Fatal编程技术网

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();