−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 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
Добавить комментарий