C++数据结构API问题

use*_*855 2 c++ api data-structures

C++库提供的数据结构API尽可能与java.util.*提供的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.
Run Code Online (Sandbox Code Playgroud)

我的猜测是Boost可能能够完成所有这些,但是我发现它太笨重并且很难将它添加到项目中,特别是当我想快速开始某些事情时,尽管代码需要全部这些数据结构,整体代码不会那么大,需要花费大量精力来设置库.

一个例子是,如果有人必须编写C++程序来为学校作业执行网络流算法.我相信我能提出更好的例子,但这一点在我的头脑中.

谢谢Ajay

Dea*_*ing 6

所有这些容器都以SC++ L中的某种形式提供:

  • Priority Queue 的std :: priority_queue(这实际上是一个容器适配器,而不是容器本身-也就是说,它的工作原理"之上"另一个容器,通常std::vectorstd::deque.
  • HashMap std :: unordered_map(或者如果你的编译器不支持C++ 0x,那么boost::unordered_map)
  • TreeMap 的std ::地图
  • HashSetTreeSet基本相同的HashMapTreeMap,除了键和值是一样的.不过,也std::unordered_setstd::set.
  • ArrayList是值得尊敬的std :: vector
  • String是值得尊敬的std :: string.您可以在Boost.Strings库中String找到Java 类中的许多函数.

不要害怕设置提升.根据我的经验,您可以将其设置一次,然后在所有项目中反复使用它.此外,我上面提到的所有库都是仅限标头的库.这意味着,您实际上不需要构建/安装任何库,只需引用标头.

至于其他的事情,我不是很确定,因为我不知道Java中所有很好.在一天结束时,你不会找到一个"就像Java一样的库,除了用C++编写",因为那会毫无意义.编写C++库是为了发挥C++的优势,编写Java库以发挥Java的优势.尝试将设计用于一种语言的库变成另一种语言,这对我来说没有意义.