1. C++ / Говнокод #9921

    +159

    1. 1
    2. 2
    3. 3
    4. 4
    bool THotKeysRepository::TKeyCombination::operator<( const TKeyCombination& y ) const
    {
    	return this->_AltKeyState<y._AltKeyState && this->_ScanCode<y._ScanCode;
    }

    Запостил: Говногость, 11 Апреля 2012

    Комментарии (10) RSS

    • потрясающе осмысленный оператор
      Ответить
      • Если кому интересно, то сейчас так:
        bool THotKeysRepository::TKeyCombination::operator<( const TKeyCombination& y ) const
        {
        	return boost::tie(_AltKeyState, _ScanCode)<boost::tie(y._AltKeyState,y._ScanCode);
        }
        Ответить
    • Для сортировки?
      Наверно, я тупой, но что-то никак не догоню, в чём здесь говно, кроме кодстайла.
      Ответить
      • Я ждал этого вопроса. Этот оператор < не рабочий.
        http://ideone.com/QE6Gp
        #include <iostream>
        #include <map>
         
         
        using namespace std;
         
        struct TKeyCombination
        {
                int _AltKeyState, _ScanCode;
                TKeyCombination(int a, int b):_AltKeyState(a), _ScanCode(b){}
         
                bool operator<( const TKeyCombination& y ) const
                {
                        return this->_AltKeyState<y._AltKeyState && this->_ScanCode<y._ScanCode;
                }
        };
         
        int main() {
                map<TKeyCombination, int> f;
                f[TKeyCombination(10,5)]=1;
                f[TKeyCombination(10,10)]=1;
                f[TKeyCombination(5,10)]=1;
                f[TKeyCombination(5,5)]=1;
                cout<<f[TKeyCombination(5,6)]<<endl;
                return 0;
        }
        вывод:
        1
        Ответить
        • >Этот оператор < не рабочий.
          Если его предполагалось так использовать, то да. А из исходного говнокода это не видно.
          Ответить
          • Это вы плюсанули коммент выше. Палитесь.)

            >Если его предполагалось так использовать, то да.
            А что сложно сразу написать рабочий оператор, соответствующий правилам, если это не требует никаких усилий, кроме наличия мозга?

            И вообще как вы ещё планировали его использовать, если не для сортировки?
            Ответить
            • >И вообще как вы ещё планировали его использовать, если не для сортировки?

              Я видел перегруженный оператор "->", я больше ничего не боюсь!
              Ответить
        • Да, жёстко я к вечеру туплю.

          (a1<a2) || ((a1==a2) && (b1<b2))

          Сам несколько раз в таких операторах ошибался, но по-прежнему время от времени забываю. Наверно, действительно пора буст подключать. :)
          Ответить
    • вот поэтому комплексные числа и не сравнивают
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий