2016-03-25 14 views
0

とSTDの並べ替え、私は他の誰かのコードを読んでいる、と私はこのようなものを参照してください。私はそれをテストするためにいくつかのコードを書いて、C++と同じ引数

と同じことをやっているようだ

sort(myvec.begin(), myvec.begin()); 

sort(myvec.begin(), myvec.end()); 

本当に同じことをしますか?それは文書化されていますか?それを理解する方法はありますか、それともそれをその方法で実装するのは単なる選択ですか?答え

アップデートはい、それは-OPません。テストコードにバグがありました。それは空の範囲だから

+0

でなければなりません。 – Mahesh

答えて

4

コード

sort(myvec.begin(), myvec.begin()); 

は、ノーオペレーションはなりません。コード

sort(myvec.begin(), myvec.end()); 

myvecの内容全体をソートします。これらが同じことをした場合、それはあなたのベクトルが既にソートされていることを意味します。最初の行は、間違いなく誤植やバグが発生するのを待っています。

1

イテレータは範囲を指定する単なる方法です。このコードが適切に機能すると思っていたとしても、直感が悪いはずです。 2つのインデックスを取るメソッドを使うと、ソートされるベクトルの部分のインデックスとその終わりを示すインデックスが始まります。 sort(0, myvec.size())sort(0, 0)は同等ですか?

このコードはundoubtly `のstd :: sort`は何もしてはならない、最初のケースでsort(myvec.begin(), myvec.end());

関連する問題