从QMap <k,t =“”>获取Java样式迭代器,而无需指定T,K

时间:2018-07-07 16:48:10

标签: c++ qt qtcore

有什么方法可以从QMap获取Java样式的迭代器而无需显式指定K和T吗?

例如,写作

QMap<QString, SomeType> map;
auto qIt = map.getIterator();

代替

QMap<QString, SomeType> map;
QMapIterator<QString, SomeType> qIt(map);

1 个答案:

答案 0 :(得分:3)

如果您只是想节省一些重复的输入,那么您可以编写一个小的函数模板,以利用将从传递的参数推导出模板参数的事实。

template<typename Key, typename Value>
QMapIterator<Key, Value> make_qiter (QMap<Key, Value> &map)
{
  return(QMapIterator<Key, Value>(map));
}

然后用作...

QMap<QString, SomeType> map;
auto qIt = make_qiter(map);