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

    −1

    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
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    typedef std::vector<LogicalTypeNamedItem_t> LogicalTypeNamedItems_t;
    
    class LogicalTypesContainer
    {
    ...
    ...
    ...
    public:
        bool Find(QString Name, QString Type);
        LogicalTypeItems_t m_Result;
    };
    
    
    bool LogicalTypesContainer::Find(QString Name, QString Type)
    {
        for(LogicalTypeNamedItems_t::iterator it = m_LogicalTypeNamedItems.begin();
            it < m_LogicalTypeNamedItems.end(); ++it)
        {
            LogicalTypeNamedItem_t LogicalTypeNamedItem = *it;
            if(QString::compare(LogicalTypeNamedItem.GetName(), Name, Qt::CaseInsensitive) == 0)
            {
                LogicalTypeTypedItems_t LogicalTypeTypedItems = LogicalTypeNamedItem.GetLogicalTypeTypedItems();
                for(LogicalTypeTypedItems_t::iterator devIt = LogicalTypeTypedItems.begin();
                    devIt < LogicalTypeTypedItems.end(); ++devIt)
                {
                    LogicalTypeTypedItem_t LogicalTypeTypedItem = *devIt;
                    if(QString::compare(LogicalTypeTypedItem.GetType(), Type, Qt::CaseInsensitive) == 0)
                    {
                        m_Result = LogicalTypeTypedItem.GetLogicalTypes();
                        return true;
                    }
                }
            }
        }
        return false;
    }

    Есть некий контейнер LogicalTypesContainer, хранящий данные, необходимые во множестве мест. В главном окне приложения создается экземпляр LogicalTypesContainer. У главного окна реализуется интерфейс, возвращающий указатель на данный объект. Далее во все мыслимые и немыслимые места передается указатель на форму главного окна. Суть приведенного фрагмента кода в том, что требуется по некоторому ключу найти в map'е вектор и далее в этом векторе найти некий объект. Делается это во множестве мест. Идиотизм в том, что метод find не просто ищет по ключу, а создает копию вектора, в котором потом самостоятельно надо искать требуемый элемент.

    Запостил: AlexRider, 12 Мая 2016

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

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

    Ошибка компиляции комментария:
    1. Гости могут высказаться только в понедельник, среду, четверг или воскресение
    ava Семь раз отмерь — один отрежь, guest!
    А не использовать ли нам bbcode?
    • [b]жирный[/b] — жирный
    • [i]курсив[/i] — курсив
    • [u]подчеркнутый[/u] — подчеркнутый
    • [s]перечеркнутый[/s] — перечеркнутый
    • [blink]мигающий[/blink] — мигающий
    • [color=red]цвет[/color] — цвет (подробнее)
    • [size=20]размер[/size] — размер (подробнее)
    • [code=<language>]some code[/code] (подробнее)
    Проверочный код