从 QMap<K, T> 获取 Java 样式迭代器而不指定 T、K

Getting Java style Iterator from QMap<K, T> without specifying T, K

有没有办法在不显式指定 K 和 T 的情况下从 QMap 获取 java 样式的迭代器?

例如,写作

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

而不是

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

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

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