这里尝试使用字典存储方式实现一下稀疏矩阵,考虑到需要提供字典键,我们可以将元素的位置信息通过一一映射的方式转换为键值(这里采用简单的拼接方式,细节见源码),同样是因为一一映射的缘故,通过键值我们也可以获得元素的位置信息...实现过程中自然也有不少意外,其中一个觉得挺有意思:
C/C++ 中多维数组的动态申请
C/C++ 中动态申请一维数组对于大部分朋友来说应该是轻车熟路:
// C++
T* array = new T[array_size...[i] = new int[col];
}
概念上其实就是"数组的数组",同样的,如果使用容器,你就需要 std::vector> 这样的定义....但如果考虑到数据缓存,代码复杂度等因素,个人还是建议将多维数组展平为一维数组,并提供多维方式的访问接口:
// C++
// create array
T* array = new T[row * col...比较结果
代码分别使用了 std::map 和 std::unordered_map 作为底层容器实现了稀疏矩阵,并与基于数组实现的普通矩阵进行了程序效率和空间使用上的对比,下图中的横坐标是矩阵的大小,