楼上的说法都是指针不难。但我觉得并非如此,指针确实不是 elementary 的编程范式。
这个问题的实质在于,有些程序根本不是 elementary 的编程范式能写完的。
追求性能的算法,为了抠复杂度里面的常数,需要手工管理内存分配、需要尽可能避免条件分支带来的 cpu 流水线失效开销,需要注意 cpu 的 L1、L2、L3 缓存。这些都只有 C++ 才能搞定,Java 不行,C# 也不行。
没错,Java 也能写算法。不用指针,用数组,用下标。实在不行就无脑 new,反正 gc 会回收。除了最后一条,C++ 也能用数组,也能用下标。但是就无法优化到流水线和缓存都妥当的程度。
- - - -
这里随便给你看一个 C++ 实现的哈希表,里面不仅有一级指针还有二级指针,顺便还有 memset、定长数组这种写算法题最常用的手段,你可以感受一下:
https://gist.github.com/haowen-xu/c73fa08f6450b6d8dec9605ae0aa320a