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

Есть-ли поиск по полю в STL? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Транспонирование текстового документа http://www.cyberforum.ru/cpp-beginners/thread154121.html
Здравствуйте. Как можно наиболее адекватно транспонировать матрицу чисел из текстового документа? Например, есть исходный текстовый документ: 1 2 3 4 5 55 89 45 7 0 Необходимо получить:
C++ Строку в массив через контрольный сивол Здравствуйте, есть строка: std::string mystring = "first|second|third|raz|dva|tri"; какой функцией можно сделать так, чтобы эта строка перешла в массив таким образом: например, название массива 'array': array = "first"; array = "second"; array = "third"; array = "raz"; array = "dva"; array = "tri"; http://www.cyberforum.ru/cpp-beginners/thread154114.html
почему printf используют в С++ НАМНОГО реже чем cout? типа ООП, и пусть всё будет на классах? C++
почему printf используют в С++ НАМНОГО реже чем cout? типа ООП, и пусть всё будет на классах?
Об операторе присваивания C++
можно "перевести"?
C++ Перевод числа в массив http://www.cyberforum.ru/cpp-beginners/thread154079.html
Здравствуйте. У такой меня вопрос: могу ли я перевести n-значное число в массив из n элементов. Например 123 = {1, 2, 3}??? Мне нужно для решения задачи по длинной арифметике на срр. Или может лучше считать число каким-либо другим способом, чтобы потом поразрядно складывать с другим?
C++ Найти букву в тексте, что встречается чаще других программа принемает строку, находит самую часто всречающуюся букву, и выводит слова в которых НЕТУ этой буквы. вернее она должна это делать. букву находит функция, и делает это правельно. но слова правельно не выводит.... подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.07.2010, 02:47     Есть-ли поиск по полю в STL?
Писал программу. Дана структура. Надо реализовать ввод/вывод/сортировку по зарплате и по имени/поиск по зарплате. Данные хранить в списке. Написал.
Программа
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <list>
#include <string>
#include <algorithm>
struct Employee
{
    std::string name;
    std::string surname;
    std::string employ;
    double salary;
    friend std::ostream& operator <<(std::ostream&os, Employee&Ob);
    friend std::istream& operator >>(std::istream&is, Employee&Ob);
};
std::ostream& operator <<(std::ostream&os, Employee&Ob)
{
    os<<"Name: "<< Ob.name <<'\n';
    os<<"Surname: "<< Ob.surname <<'\n';
    os<<"Employ: "<< Ob.employ <<'\n';
    os<<"Salary: "<< Ob.salary <<'\n';
    return os;
}
std::istream&operator >>(std::istream&is, Employee&Ob)
{
    std::cin.get();
    std::cout<<"Enter name: "; std::getline(is, Ob.name);
    std::cout<<"Enter surname: "; std::getline(is, Ob.surname);
    std::cout<<"Enter employ: "; std::getline(is, Ob.employ);
    std::cout<<"Enter salary: "; is>>Ob.salary;
    std::cout<<std::endl;
    return is;
}
bool Sort_by_surname(const Employee&Ob, const Employee&Ob1)
{
    return Ob.surname<Ob1.surname;
}
bool Sort_by_sal(const Employee&Ob, const Employee&Ob1)
{
    return Ob.salary<Ob1.salary;
}
int main()
{
    std::list<Employee> List;
    Employee*Arr;
    int n=0;
    std::cout<<"Enter num of elements of array\n";
    std::cin>>n;
    Arr=new Employee[n];
    for(int i=0;i<n;i++)
    {
        std::cout<<"Enter [ "<< i+1 <<" ] element of array\n";
        std::cin>>Arr[i];
        List.push_back(Arr[i]);
    }
    std::list<Employee>::iterator p=List.begin();
    std::cout<<"Base information: \n";
    while(p!=List.end())
    {
        std::cout<<*p<<'\n';
        p++;
    }
    List.sort(Sort_by_surname);
    p=List.begin();
    std::cout<<"After sort by surname: \n";
    while(p!=List.end())
    {
        std::cout<<*p<<'\n';
        p++;
    }
    List.sort(Sort_by_sal);
    p=List.begin();
    std::cout<<"After sort by salary: \n";
    while(p!=List.end())
    {
        std::cout<<*p<<'\n';
        p++;
    }
    double Sal=0;
    bool count=false;
    std::cout<<"Enter salary for search\n";
    std::cin>>Sal;
    for(int i=0;i<n;i++)
    {
        if(Arr[i].salary==Sal)
        {
            std::cout<<"People with salary "<<Sal<<": "<<'\n'<<'\n'<<Arr[i]<<'\n';
            count=true;
        }
    }
    if (count==false)
        std::cout<<"There is no peoples with such salary\n";
    delete[] Arr;
    return 0;
}


Есть только 1 вопрос. Обязательно ли делать так:
C++
1
2
3
for(int i=0;i<n;i++)
    {
        if(Arr[i].salary==Sal)
То есть искать по полю в массиве или все же можно средствами STL непосредственно через список? И если можно, то как? Книжки смотрел. Не нашел. Спасибо за ответ!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru