2010-08-09 4 views
2

Добавление: Я понимаю, что это сообщение, похоже, принимает форму напыщения, но если вы можете исправить любые недоразумения, которые у меня есть, прояснить что-нибудь или еще лучше: помогите мне решить мою проблему с проблемой итератора, я был бы очень благодарен ! В настоящее время я использую cplex 9 (я знаю, что это не последнее, это из моих рук).Является ли это только мне или может ли Cplex Concert API использовать некоторые улучшения?

Является ли это просто мной или может использовать API-интерфейс CPLEX Concert API? Говорить о том, что он оставляет желать лучшего, было бы мягко выразить его в моем нынешнем мнении, поскольку оно, похоже, нарушает практически все установленные практики качества C++ API, которые я когда-либо встречал.

Нотаблей: присваиватели

  • константные
  • оператор [] возвращение ссылки ручки объекты вместо ссылок
  • нет массива итераторы (даже если итераторы не являются большими для параллельного программирования, она должна еще быть доступны для использования менее критического кода на мой взгляд)
  • крайний разработчик-враждебное для пользователей, которые хотят СТЛ для смешивания двух (или, если не STL, хотя бы кода, который сам по себе является STL-совместимым, например Boost).
    • пример: не один typedef в классах массивов, даже не (с минимальным и абсолютным минимумом) value_type.

Я сделал обертку массив, это было легко. Оболочка итератора, которую я сделал, не так много. Из-за первых двух точек, итератор (в настоящее время) приводит к коду, который компилируется, когда он не должен! Я все еще пытаюсь найти способ обойти это (я использую boost.iterator_facade).

Не поймите меня неправильно, я понимаю, что компромиссы должны быть сделаны при разработке API. Мне совершенно ясно, что API был разработан для упрощения руководств (скрывая зависящие от языка соображения от пользователя, которого я представляю). Тем не менее, хотя он, возможно, упростил разработку C++ API, он сделал мой код более сложным и трудоемким, чтобы компенсировать то, что я в настоящее время считаю ошибкой дизайна.

Когда в Риме делайте как римляне!

Я ЛЮБЛЮ, чтобы услышать обоснование их проектных решений в отношении этих пунктов.

Редактировать: Мне удалось заставить мой класс Iterator работать, при обработке устраняя как можно больше недостатков и правильности углового использования в отношении использования с помощью итераторов в объектно-ориентированном дизайне cplex, как я мог, на стоимость некоторой производительности (клонирование извлечений перед возвратом их из const_iterator). оставляя (я считаю) только первый заметный недостаток, который не может быть исправлен без дополнительного слоя косвенности вокруг каждого затронутого типа в cplex api .. нет, спасибо, я просто должен быть осторожным с частотой вызовов, когда разыменования const_iterators типов, основанных на IloExtractable.

ответ

0

Не то, что это поможет вам много, но я не мог поверить, что улучшения, когда я перешел от CPLEX 9 до 12, она разработана для использования с 12 является бесплатным для академического использования.

+0

Прошу прощения за этот чрезвычайно поздний ответ, хотя в данный момент это не имеет никакого значения, мне просто хотелось попрактиковаться и сказать, что, когда я написал CPLEX 9 выше, я имел в виду 10. К сожалению, у меня нет доступа к 12. – Geoff

 Смежные вопросы

  • Нет связанных вопросов^_^