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++って複雑だなぁ(;´Д`)