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

    +29

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    namespace NFlash
    {
            class TCommandMap
    	{
    	public:
    		typedef std::pair<NProtocolConsts::SCommands::E, pChar> TPair;
    	private:
    		std::vector<TPair> _commandMap;
    	public:
    		TCommandMap(void);
    		void appendCommand(TPair & Command);
    		void appendCommand(NProtocolConsts::SCommands::E, abstractString & Name);
    		const std::vector<TPair> & Names(void) const;
    		byte MaxCommandNameLength(void) const;
    		NProtocolConsts::SCommands::E GetCommandIndex(PChar Name) const;
    	};
    
    	void initCommandMaps(void);
    }

    Запостил: Говногость, 24 Августа 2012

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

    • показать все, что скрытоко ко ко?
      Ответить
      • По всему видно, реализация std::map через std::vector
        Ответить
    • - Велосипедисты... std::map?
      - Не, не слышал. У меня нет времени изучать STL, тк мне нужно на работе писать велосипеды.
      Ответить
    • Я тоже иногда использую vector<pair<>>, его сортировать можно и в целом так удобнее.
      Ответить
      • Loki::AssocVector, Boost::flat_map, так что не нужен. Я вам потом реализацию поиска в этом векторе пришлю. Никакой сортировки автор кода не делал.
        Ответить
    • alist
      Ответить
      • Поясни.

        Бе. Бе. Бе.
        Ответить
      • Мне тоже поясните. Не понял вашего вопроса или восклицания...
        Ответить
        • Пояснить по хардкору с вертушки в Щи?
          Ответить
          • У тебя Ip-адрес говна.

            Striko
            Ответить
            • А у говна есть ип-адрес? Какой ты смешной. (:
              Ответить
              • Ну все. Я тебя баню.

                Striko

                Пользователь guest забанен до 28.08.2012.
                Ответить
        • http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node153.html
          Довольно часто используется в Lisp-программах.
          Ответить
          • Да, используется обычный линейный поиск в этом велосипеде. Глуповато конечно. Элементов в нем больше 100-ни.
            Ответить
          • Это то, что мне всегда не нравилось в функциональных языках. Они поощряют подобное поведение. Фактически здесь используется самый неоптимальный способ поиска (линейный) и хранения (в списке), что не оптимально ни для кеша ЦПУ, ни для потребления памяти.
            Ответить
            • > Они поощряют подобное поведение
              Никто не поощряет. В том же лиспе есть хэш-таблицы. В стандартной библиотеке Haskell полно разных быстрых контейнеров, на любой вкус.
              Просто если элементов мало, иногда проще сохранять их в таком списке. К примеру, в такой "структуре" лежит список minor-модов Emacs. Если нужна "мапа" из 5 элементов, то alist очень даже уместен.
              Для 100 элементов, по которым постоянно происходит поиск, его никто не использует.
              Ответить
    • Конечно, каждый раз, реализуя для некоторой предметной области, например NFlash (как здесь) некий класс - не следует переизобретать std::map, темболее, если делаешь это криво.
      Ответить

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