Angus Leeming <[EMAIL PROTECTED]> writes:

| On Tuesday 05 November 2002 12:24 pm, Lars Gullik Bjønnes wrote:
>> Angus Leeming <[EMAIL PROTECTED]> writes:
>> | On Tuesday 05 November 2002 12:08 pm, Lars Gullik Bjønnes wrote:
>> >> Angus Leeming <[EMAIL PROTECTED]> writes:
>> >> | Doesn't fix getVectorFromString, but does reduce cpu usage thereafter.
>> >> | Ok to apply?
>> >>
>> >> yes.
>> |
>> | Thanks, but since I had the file open...
>> |
>> | I think that this is wrong:
>> |
>> | // A functor for use with std::sort, leading to case insensitive sorting
>> | struct compareNoCase: public std::binary_function<string, string, bool>
>> | {
>> |    bool operator()(string const & s1, string const & s2) const {
>> |            return compare_ascii_no_case(s1, s2) < 0;
>> |    }
>> | };
>> |
>> | vector<string> const getKeys(InfoMap const & map)
>> | {
>> |    vector<string> bibkeys = ...;
>> |    sort(bibkeys.begin(), bibkeys.end(), compareNoCase());
>> | }
>> |
>> | Shouldn't sort use compare_ascii_no_case directly here? As written the
>> | code is using (a == b), but sort uses (a < b) doesn't it?
>>
>> I think the code is right as it is.
>>
>> sort would try to use std::less<string>(a, b) which would return
>> bool(a < b)
>
| Indeed. However, does the functor need to derive from std::binary_function? 
| It compiles fine without which, if I read my "Effective STL" correctly, means 
| that it'll also work ok.

let's say that it is nice to do so, and some stdlibs will have checks
to see if you do. f.ex from stdlibc++:

      // concept requirements
      __glibcpp_function_requires(_Mutable_RandomAccessIteratorConcept<
            _RandomAccessIter>)
      __glibcpp_function_requires(_BinaryPredicateConcept<_Compare, _ValueType,
_ValueType>)

-- 
        Lgb

Reply via email to