Возможный дубликат:
Как найти элемент в std :: vector?
Я использую C ++ Builder для создания приложения VCL Forms. У меня также есть векторный массив объектов встреч, у каждого из которых есть имя, тип, дата / время напоминания, дата / время, местоположение и комментарии.
Я хочу реализовать функцию поиска, которая позволит пользователю найти встречу по определенным критериям.
Пользователь может выбрать поиск встречи в векторном массиве, выбрав имя, тип и т. Д. Или их комбинацию.
Какую концепцию программирования лучше всего использовать в этой ситуации? Вектор не большой. Не более 10 или 20 элементов.
Спасибо
std::find_if(A.begin(),A.end(),isthatit(conditions));
где isthatit
является объектом предиката, построенным из условий.
использование std::find_if()
и определить требуемый предикат (если C ++ 11, вы можете использовать лямбда-функцию).
Посмотреть онлайн демо http://ideone.com/Md7sp.
Если у вас много критериев, вы должны подумать о
Boost.MultiIndex контейнер, который предназначен для различных поисковых индексов.
http://www.boost.org/doc/libs/1_51_0/libs/multi_index/doc/tutorial/index.html