vector

今日もちょっとだけVC6のvectorクラスを見てみたんですけど、いろいろと面白い発見があって楽しいです。
例えば、operatorの、==,!=,<,>,<=,>=の6つの演算子の実装方法。
これは、こんな感じになっていました。

bool operator==( const T& lha , const T& rha ){ return lha.Eq( rha ); }
bool operator!=( const T& lha , const T& rha ){ return !(lha == rha)); }
bool operator< ( const T& lha , const T& rha ){ return lha.Lt( rha ); }
bool operator> ( const T& lha , const T& rha ){ return rha < lha; }
bool operator<=( const T& lha , const T& rha ){ return !(rha < lha); }
bool operator>=( const T& lha , const T& rha ){ return !(lha < rha); }

実際に実装しているのはoperator==とoperator<の2つだけで、残りはその2つのoperatorから求めています。
……いや、当たり前のことかもしれないけど、自分にとっては目から鱗でした(;´Д`)


他にも、bool型のvectorは別に作ってあることとか、at()とoperator[]()の処理はちょっとだけ違っていたこととか、iteratorの実装の方法とかが分かりました。
他にも、constの使い方がいまいち分からないことや、explicitの使い方が全く分からないことも分かりました(ぉ


C++って複雑だなぁ(;´Д`)