Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mamchur
0 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 10
#1

Find() для поиска элемента в поле класса / STL - C++

09.03.2014, 21:19. Просмотров 925. Ответов 3
Метки нет (Все метки)

Есть какой то класс, к примеру:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Dog
{
public:
Dog ()
{};
public:
string Name;
string Poroda;
string Pol;
int Age;
int Medals; 
};
Также есть вектор данного класса:
C++
1
vector <Dog> arr;
Как реализовать поиск по полю Name ?
C++
1
vector <Dog>::iterator i = find (arr.begin(), arr.end(), x);
// как поправить эту строку, что бы поиск осуществлялся не по всему вектору (по всем полям), а только по полю Name?

Объясните пожалуйста более детально или дайте ссылку на соотв. литературу. В учебнике "Л.Аммерааль - STL для программистов на с++" ответа не нашел
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2014, 21:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Find() для поиска элемента в поле класса / STL (C++):

STL find - C++
deleted нашел

оператор find в stl - C++
Допустим у меня есть такой код: #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;string&gt; #include &lt;windows.h&gt; #include &lt;iostream&gt;...

STL алгоритм find, найти элементы - C++
Здраствуйте! У меня есть например массив vector&lt;int&gt; mas = {1,2,3,4,4,4,5,6}; Найти надо элемент 4, но find ищет только первый этот...

STL. Алгоритм find(). Игнорировать регистр - C++
Вся суть вопроса изложена в теме. Есть код, я помещаю в очередь с двусторонним доступом 9 слов, далее использую алгоритм find чтобы найти...

Организовать find в векторе через STL!!! - C++
Написал через вектор STL некий контейнер заполнил его данными. Написал сортировку и вывод всех значений через вспомогательные обьекты....

Код класса большие числа из книги Л.Аммерааля Stl для программистов - C++
Здравствуйте, не у кого нет кода класса большое число из книги Л.Аммерааля Stl для программистов Заранее спасибо!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
09.03.2014, 21:53 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Есть bind, есть лямбды, можно функциональные объекты писать - способов много. Я так привык делать:
C++
1
2
3
4
5
6
7
8
9
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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
 
using std::string;
 
struct People
{
   string Name;
   int Age;
};
 
int main()
{
   namespace pl = std::placeholders;
   std::vector<People> v {{"Vasa", 30}, {"Lena", 29}, {"Sveta", 15}, {"Vova", 25}};
   std::vector<People>::iterator it = std::find_if(v.begin(), v.end(), std::bind(std::equal_to<string>(),
                                                                       std::bind(&People::Name, pl::_1), "Sveta"));
   if (it != v.end())
      std::cout << "Name: \"" << (*it).Name << "\", Age: \"" << (*it).Age << "\"\n";
   else
      std::cout << "Not founded.\n";
 
   auto it2 = std::find_if(v.begin(), v.end(), [](const People& s)
   {
      return (s.Name == "Lena") ? true : false;
   });
   if (it2 != v.end())
      std::cout << "Name: \"" << (*it2).Name << "\", Age: \"" << (*it2).Age << "\"\n";
   else
      std::cout << "Not founded.\n";
 
   return 0;
}
Mamchur
0 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 10
10.03.2014, 00:14  [ТС] #3
Все работает, спасибо.
Подскажите, где можно подробнее изучать принципы работы bind, лямбды и тд. Я просто совсем не понял как это все работает
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
10.03.2014, 00:28 #4
Про bind тут неплохо написано: boost::bind. Про лямбды в книгах можно почитать (только в новых, где описывается С++11), ну и в интернете информации полно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2014, 00:28
Привет! Вот еще темы с ответами:

Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком - C++
Решить задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком. Тип элементов задается как параметр...

Как в векторе объектов пользовательского класса изменить заданное поле у определённого элемента? - C++
Добрый день. Создан вектор из структры: struct man { char name; int age; man(void) {} man(const...

Сделать добавление элемента в массив и удаление элемента из массива используя STL - C++
Всем привет. Помогите пожалуйста написать. Нужно использовать STL. Необходимо сделать добавление элемента в массив и удаление элемента из...

Перебор массива для поиска большего по модулю элемента - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cmath&gt; #include &lt;iomanip&gt; using namespace std; int main(){ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.03.2014, 00:28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru