【问题标题】:Libraries for Algorithms [closed]算法库[关闭]
【发布时间】:2011-04-09 21:22:48
【问题描述】:


是否有任何库/sdk/等“允许”在您的程序中毫无困难地使用算法?下面的代码可以更好地描述我的问题(我需要这样的东西):

algorithm* a = new search_algorithm("binary_search");
a->set_data("some text to be searched");
search_result_t r = a->search("this_text");

感谢您的回复。

附:谢谢大家,但我已经“听说”了 STL 和 Boost。我在上面使用了一个简单的例子,但是“在我的梦里”我也想得到这个:

algorithm* a = new search_algorithm("boyer_moore");
//...
a = new graph_algorithm("brent");
a->set_graph(/*graph_t*/gt);
a->detect_cycles(...);

甚至这个:

a = new tree_algorithm("kruskal");
tree_t* mt = new tree_t(...);
a->set_tree(mt);
a->get_min_spanning_tree(...);

【问题讨论】:

  • 是的……这就是 SDK 的用途……只需根据您想要的算法搜索一个。

标签: c++ algorithm sdk


【解决方案1】:

你已经“听说”过 Boost 和 STL_,所以我想你已经听说过

你到底错过了什么?

【讨论】:

  • 可能是库 API 语法?我只想设置算法名称并获得相应的功能。希望,我能尽快更好地描述我的问题。感谢 [有用的] 链接。
  • 呃...感谢您的接受。 API 库语法......我猜我们其他人所做的就是在它们之上塑造我们自己的接口,因此我们可以使用 GreatCodeWrittenByOthers(TM) 而无需考虑/调整我们使用它的首选编码风格。 FOSS 可以为您提供的服务是有限度的 :)
  • 你知道 Boost 是否涵盖了所有算法(en.wikipedia.org/wiki/List_of_algorithms 中列出的算法)?
  • 好吧,一方面我知道 Strassen 的(矩阵 mult)仍然是 TODO,所以真正快速的答案应该是:否
【解决方案2】:

您可以使用“STL:算法”和 boost 库。它并不总是包含您要查找的内容,但这是因为必须为您的数据集定制很多内容。

【讨论】:

    【解决方案3】:

    标准库已经包含许多算法(包括二进制搜索)的模板。在您给出的示例中二进制搜索不起作用(它需要排序的输入)的小附带条件,它实际上比您展示的更容易:

    int values[] = { 1, 3, 4, 5, 8, 9};
    
    int *pos = std::lower_bound(values, values+6, 5);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-08
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多