只是我或者Cplex Concert API能否使用一些改进?

时间:2010-08-09 18:52:06

标签: c++ cplex

附录:我意识到这篇文章似乎采取了咆哮的形式,但如果你能纠正我的任何误解,澄清任何事情,或者更好:帮助我解决迭代器问题我的问题,我会非常感激!我目前正在使用cplex 9(我知道它不是最新的,它不在我的手中)。

仅仅是我还是CPLEX Concert API可以使用一些改进?说它还有很多不足之处就是我现在的观点,因为它似乎违反了我所遇到过的高质量C ++ API设计的每一个惯例。

知名人士:

  • const setter methods
  • operator []返回引用句柄对象而不是引用
  • 没有数组迭代器(即使迭代器不适合并行编程,我认为它仍然可供较不重要的代码使用)
  • 极端开发者 - 对STL用户的敌意,他们希望混合两者(或者如果不是STL,至少代码本身已经与STL兼容,如Boost)。
    • 示例:数组类中没有单个typedef,甚至不是(绝对最小值)value_type。

我制作了一个数组包装器,这很简单。我做过的迭代器包装器,不是那么多。由于前两点,迭代器(当前)导致代码在不应该编译时编译!我仍然试图找到解决方法(我正在使用boost.iterator_facade)。

不要误解我的意思,我知道在设计API时需要进行权衡。我很清楚,API旨在简化手册(隐藏与我想象的用户的语言相关的考虑因素)。但是,虽然它可能简化了C ++ API的设计,但它使我的代码编写变得更加复杂和耗时,以弥补我目前认为的设计错误。

在罗马时,像罗马人那样做!

我很乐意听到有关这些要点的设计决定的理由。

编辑:我已经设法让我的Iterator类工作,在处理过程中消除尽可能多的角落案例可用性和正确性缺陷关于cplex的对象传递设计中的迭代器的使用情况,我可以某些性能的成本(在从const_iterator返回之前克隆可提取物)。离开(我相信)只留下第一个值得注意的缺陷,如果没有在cplex api中每个受影响类型的额外层间接,就无法纠正。不用多谢,我只需要小心调用的频率解除引用IloExtractable派生类型的const_iterators。

1 个答案:

答案 0 :(得分:0)

并不是说这会对你有所帮助,但是当我从CPLEX 9切换到12时,我无法相信这些改进,因为它可以免费用于学术用途,所以它可以使用。