c ++模板迭代地图

use*_*780 2 c++

我为任意模板迭代器构建了一个模板,但它不起作用,我无法弄清楚为什么......有人可以帮助我吗?

模板:

template<typename type1,typename type2>
void printmap(map<type1,type2>&thismap)
{
    for(map<type1,type2>::iterator it = thismap.begin(); it != thismap.end(); ++it)
    {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

显示的错误是:

在此输入图像描述

有人可以帮助我吗?谢谢:)

kwi*_*man 9

轻松飘逸的美丽,型号:

for(typename map<type1,type2>::iterator it = thismap.begin(); it != thismap.end(); ++it)
Run Code Online (Sandbox Code Playgroud)

原因是:

在合格的依赖类型之前,您需要typename

请参阅此处了解详情.

或者,您可以在循环外部使用typedef使其更具可读性:

typedef typename map<type1, type2>::iterator mapIt;
for(mapIt it = thismap.begin(); it != thismap.end(); ++it){
    ...
}
Run Code Online (Sandbox Code Playgroud)