Changeset 3548 for trunk/doc


Ignore:
Timestamp:
Jan 1, 2017, 5:56:44 AM (4 years ago)
Author:
Peter
Message:

The concept 'Distance' now requires that operator() works on iterator
that are readable and forward traversal, i.e., the previously implicit
requirement that iterator's reference type is lvalue is
dropped. closes #873

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/concepts.doxygen

    r3322 r3548  
    293293
    294294\ref concept_distance is a concept for classes implementing different
    295 alternatives to calculate the distance between two points.
     295alternatives to calculate the distance between two ranges. For details
     296on requirements needed for a class modelling the concept \ref
     297concept_distance refer to section below, but a convenient way to
     298implement a class is to use class theplu::yat::statistics::Distance as
     299base class.
    296300
    297301\section concept_distance_requirments Requirements
     
    307311
    308312\verbatim
    309 template<typename Iter1, typename Iter2>
    310 double  operator() (Iter1 beg1, Iter1 end1, Iter2 beg2) const
     313template<typename Iterator1, typename Iterator2>
     314double  operator() (Iterator1 beg1, Iterator1 end1, Iterator2 beg2) const
    311315\endverbatim
    312316
     
    314318elements of two ranges. The first range is given by [\a beg1, \a end1)
    315319and the second range starts with \a beg2 and has the same length as
    316 the first range. The function should support iterators of the category
    317 std::forward_iterator. The function should provide both a fast
    318 calculation for unweighted iterators and a calculation for weighted
    319 iterators. The latter correspond to the case where elements in a range
    320 have both a value and a weight. The selection between unweighted and
    321 weighted implementations should utilize
     320the first range. The function should support iterators that model \ref
     321concept_data_iterator and \forward_traversal_iterator, in other words,
     322the function should not assume any functionality not guaranteed by
     323concepts \forward_traversal_iterator and \readable_iterator.
     324
     325As \ref concept_data_iterator should be supported implies that class
     326should support \ref concept_weighted_iterator. Typically a \ref
     327concept_distance class has a fast calculation for the case when
     328neither of the two input ranges is weighted, and a separate function
     329taking care of weights. A convenient way to select between unweighted and
     330weighted implementations is to utilize tag structs
    322331theplu::yat::utility::unweighted_iterator_tag and
    323 theplu::yat::utility::weighted_iterator_tag. Moreover
    324 theplu::yat::utility::weighted_if_any2 should be utilized to provide a
    325 weighted implementation if any of the two ranges is weighted, and an
    326 unweighted implementation when both ranges are unweighted.
     332theplu::yat::utility::weighted_iterator_tag as returned from meta-function
     333theplu::yat::utility::weighted_if_any2.
     334
     335The class theplu::yat::utility::DistanceConcept an be used to test
     336that a class fulfills these requirements.
    327337
    328338\section concept_distance_implementations Implementations
Note: See TracChangeset for help on using the changeset viewer.