我有这么短的代码片段.我不明白这种结构意味着什么.我知道这段代码从输入中读取数字并在unordered_map中计算其频率.但是什么[&]呢?那是什么意思(int x)?这input(cin)代表什么?我的意思是括号中的"cin"?而for_each如何迭代input(cin)到空eof参数?我不明白这整个建筑.
unordered_map<int,int> frequency;
istream_iterator<int> input(cin);
istream_iterator<int> eof;
for_each(input, eof, [&] (int x)
{ frequency[x]++; });
Run Code Online (Sandbox Code Playgroud) 我很好奇为什么我们需要Java7中的钻石操作符?我们可以使用一个简单的静态泛型方法来模拟这种行为,该方法可以添加到集合API中:
HashMap的方法代码:
public static <R, S> HashMap<R, S> getInstance() {
return new HashMap<R, S>();
}
Run Code Online (Sandbox Code Playgroud)
我们可以这样使用它:
Map<String, List<String>> m = HashMap.getInstance();
Run Code Online (Sandbox Code Playgroud)
和代码,当你可以尝试这种行为:
import java.util.HashMap;
import java.util.Map;
import java.util.List;
import java.util.Arrays;
public class Diamond {
public static void main(String... args) {
Map<String, List<String>> m = getInstance();
m.put("Hello", Arrays.asList("Peter", "Robert"));
System.out.println(m.toString());
}
public static <R, S> HashMap<R, S> getInstance() {
return new HashMap<R, S>();
}
}
Run Code Online (Sandbox Code Playgroud)