C++ 数据结构 API 问题

标签 c++ api data-structures

哪些 C++ 库提供了尽可能与 java.util.* 提供的数据结构 API 相匹配的数据结构 API。 具体来说,我正在寻找以下 DS 和以下实用功能:-

**DS**: Priority Queue, HashMap, TreeMap, HashSet, 
    TreeSet, ArrayList, String most importantly. 
**Utility**: Arrays.* , Collections.*, Regex, FileHandling etc.
    and other converters and algorithms like Binary Search, Sort, NthElement etc.

我的猜测是,Boost 可能能够做到所有这些,但我发现它太大了,并且将其添加到项目中并不简单,特别是当我想快速开始某件事并且虽然代码需要所有这些数据结构,总体代码不会那么庞大,需要花费大量精力来设置库。

一个例子是,如果有人必须编写 C++ 程序来完成学校作业的网络流算法。我确信我可以想出更好的例子,但这个例子在我的脑海中。

谢谢 阿杰

最佳答案

所有这些容器都可以在 SC++L 中以某种形式使用:

  • 优先队列 std::priority_queue (这实际上是一个容器适配器,而不是容器本身 - 也就是说,它在另一个容器“之上”工作,通常是 std::vector std::deque
  • HashMap std::unordered_map (或者,如果您的编译器不支持 C++0x,则可以使用 boost::unordered_map)
  • 树形图 std::map
  • HashSetTreeSetHashMapTreeMap基本相同,只不过键和值是一样。不过,还有 std::unordered_setstd::set
  • ArrayList 是令人尊敬的std::vector
  • String 是可敬的 std::string 。您在 Java String 类中获得的许多函数都可以在 Boost.Strings 中找到。图书馆。

不要害怕设置提升。根据我的经验,您设置一次,然后在所有项目中一遍又一遍地使用它。另外,我上面提到的所有库都是仅 header 库。这意味着,您实际上不需要构建/安装任何库,只需引用 header 即可。

对于其他事情,我不太确定,因为我不太了解 Java。归根结底,您不会找到一个“就像 Java 一样,但用 C++ 编写的”库,因为那毫无意义。编写 C++ 库是为了发挥 C++ 的优势,编写 Java 库是为了发挥 Java 的优势。尝试将专为一种语言设计的库硬塞到另一种语言中对我来说没有意义。

关于C++ 数据结构 API 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392598/

相关文章:

c++ - 对类的公共(public)方法/变量的 undefined reference

c++ - 在使用正则表达式执行函数时逐行解析 inFile

api - 需要帮助创建 Coldfusion 应用到 Google Group API

android - AIR - 在 Android 上打开文件(openWithDefaultApplication() 替代方案)

c++ - 隐藏/显示所有窗口并恢复 Z 顺序

c++ - 使用命令行参数选择数据类型?

c++ - 需要额外的换行符

c++ - 连接 QDomNode 和 QStandardItem

arrays - 具有 c 维对象的 N 维数组与具有 C 对象的 N 维数组的性能有何不同?

c++ - 哈希类哈希