2009-12-06 (Sun)
■[C++]C++0x std::is_sorted
VC++2008 の is_sorted は効率わるくね?というエントリ。
algorithm ファイル内に is_sorted があります。以下実装引用
template<class _FwdIt> inline bool is_sorted(_FwdIt _First, _FwdIt _Last) { // test is range is ordered by operator< _DEBUG_RANGE(_First, _Last); for (_FwdIt _Next = _First; _First != _Last && ++_Next != _Last; ++_First) if (_DEBUG_LT(*_Next, *_First)) return (false); return (true); }
for (_FwdIt _Next = _First; _First != _Last && ++_Next != _Last; ++_First)
この強調部分,ループのたびに比較する必要あるのでしょうか?
template<class ForwardIterator> inline bool is_sorted(ForwardIterator first, ForwardIterator last) { if(first != last){ for(ForwardIterator next = first;; ++first){ if(++next == last)break; if(*next < *first)return false; } } return true; }
最初の一回だけ first != last の比較してます。これだとバグることあるのかな…。自信ないー。
トラックバック - http://d.hatena.ne.jp/RiSK/20091206/1260094003
リンク元
- 27 http://www.kt.rim.or.jp/~kbk/zakkicho/
- 26 http://www.kt.rim.or.jp/~kbk/zakkicho/index.html
- 8 http://www.google.com/reader/view/
- 7 http://reader.livedoor.com/reader/
- 7 http://www.kt.rim.or.jp/~kbk/zakkicho/09/zakkicho0912a.html
- 6 http://www.google.co.jp/reader/view/?tab=my
- 4 http://d.hatena.ne.jp/
- 4 http://k.hatena.ne.jp/keywordblog/c++
- 4 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=6RX&q=C+++partition+algorithm&btnG=検索&lr=lang_ja&aq=f&oq=
- 4 http://www.google.com/reader/view/?tab=cy
