メンバー以外の非フレンド機能を使用する場合はbenefitsがたくさんあります。良い例は、メンバ関数.begin(),
の代わりに非メンバstd::begin()
を使用することです。後者はC配列に対しても意味をなさないのに対し、前者はC配列でも動作するためです。同じ理由で、私たちのようなコードを書くために、ユーザーを有効にするstd::begin(),
を持っている非メンバーフレンド `std :: size()`はC配列とベクトルで動作します
それは、あまりにもstd::size()
を持っているために、より理にかなって:
int a[] = {1,2,3};
cout << std::size(a); // to print 3
を標準でこのような機能を有するに関連する技術的な問題があります?
(可能な実装は、単にC-配列およびベクターの両方のために働くだろうreturn end(a) - begin(a);
であろう。)
http://stackoverflow.com/questions/28498555/why-is-there-no-stdsize – AnT
この実装は、ランダムアクセスイテレータを持つコンテナでのみ機能します。 – chris
@ user3386109、それは本当に関係ありません。 'std :: end'はC配列で動作し、配列の終わりがどこにあるかを知ることができます。したがって、 'std :: size'も可能です。これらのどちらも、減衰したアレイでは機能しません。変更されていません。 – chris