부록 : 나는이 게시물이 호언 장담을하는 것처럼 보인다고 생각하지만, 내가 가진 오해를 바로 잡을 수 있다면, 무엇이든 더 명확하게 정리할 수 있습니다. 반복자 문제로 내 문제를 해결할 수 있도록 도와 드리겠습니다. 매우 감사하게 생각합니다. ! 나는 현재 cplex 9를 사용하고 있습니다 (최신이 아니라는 것을 알고 있습니다. 내 손이 아닙니다.).Cplex Concert API가 개선 되었어도 좋았습니까?
CPLEX Concert API가 나에게 도움이 되었습니까? 그것이 내가 이제까지 만난 품질 C++ API 디자인에 대한 모든 확립 된 관행을 위반하는 것 같아서 그것이 많이 요구된다고 말하는 것은 현재의 의견에 친절하게 넣을 것입니다.
주목할 :
- CONST 세터 방법
- 연산자 [] 참조 대신
- 연산자 [] CONST가 leading to potential errors가 const가되지 기준 핸들을 리턴의 기준 핸들 오브젝트를 반환.
- 없는 배열 반복자하고자하는 STL의 사용자를위한
- 극단적 인 개발자 적대감 (반복자는 병렬 프로그래밍에 대한 좋은하지 않더라도, 여전히 내 의견으로는 덜 중요한 코드에서 사용할 수 있어야한다) 두 개 (또는 STL이 아닌 경우 Boost와 같은 코드 자체는 이미 STL과 호환 됨)를 혼합하십시오.
- 예 : 배열 클래스의 단일 typedef가 아니고, (최소한의 절대 값으로) value_type이 아닙니다.
은 그게 쉬웠 배열 래퍼를했다. 반복자 래퍼 (iterator wrapper). 처음 두 점 때문에 iterator (현재)는 컴파일하지 않아야하는 코드를 생성합니다! 나는 여전히 주위에 방법을 찾으려고 노력하고있다 (나는 boost.iterator_facade를 사용하고있다).
나를 잘못 이해하지 마십시오. API를 디자인 할 때 트레이드 오프를 만들어야한다는 것을 이해합니다. API가 설명서를 단순화하도록 설계되었다는 것은 분명합니다 (내가 상상하는 사용자로부터 언어 별 고려 사항을 숨김). 그러나 그렇게함으로써 C++ API의 설계가 단순 해졌을 지 모르지만 현재 설계 오류라고 생각하는 것을 보완하기 위해 코드 작성이 더욱 복잡하고 시간을 많이 소비하게되었습니다.
로마에있을 때 로마인으로하세요!
나는이 점에 관한 디자인 결정의 근거를 듣고 싶다.
편집 : Ipleator 클래스를 작동 시키면 cplex의 객체 패싱 (design-passing) 디자인에서 iterator를 통해 사용법과 관련하여 많은 경우의 유용성과 정확성 결함을 제거 할 수있었습니다. 일부 성능의 비용 (추출 가능 객체를 const_iterator에서 반환하기 전에 복제). cplex api의 모든 영향을받는 유형 주위에 간접적 인 추가 레이어가 없이는 해결할 수없는 첫 번째 주목할만한 결함 만 남아 있습니다 (믿습니다). 덕분에, 다음과 같은 경우 호출의 빈도를 조심해야합니다. IloExtractable 파생 형식의 const_iterator를 역 참조합니다.
이 시점에서 아무런 차이가 없지만 이번 회신에 대해 매우 늦은 답변을 드려 죄송합니다. 위의 CPLEX 9를 작성했을 때 10 점을 기록한 것을 느꼈습니다. 불행히도 12에 액세스 할 수 없습니다. – Geoff