Форум программистов, компьютерный форум 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++ Найти букву в тексте, что встречается чаще других программа принемает строку, находит самую часто всречающуюся букву, и выводит слова в которых НЕТУ этой буквы. вернее она должна это делать. букву находит функция, и делает это правельно. но слова правельно не выводит.... подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
17.07.2010, 10:01     Есть-ли поиск по полю в STL?
Это явно работа для std::for_each.
К нему надо описать действие, выполняемое для каждого объекта. Поскольку в данном случае надо хранить состояние между вызовами, придётся описывать класс с оператором вызова функции.
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
class CheckSalary {   // Сравниватель-печатальщик для for_each
public:
    CheckSalary(double salary): s(salary), empty(true) {}   // Задаём значение при создании объекта
    ~CheckSalary() {if(empty) std::cout << "No people with such salary!";}   // Сообщение о ненайденных людях выведется автоматически при уничтожении объекта
    // Само сравнение
    void operator () (const Employee &e)  const  // в качестве e любезный for_each подставит нам каждый элемент контейнера
    {
        if(e.salary == s)
        {
            if(empty)   // Выводим заголовок только один раз
                std::cout<<"People with salary " << s <<": "<<'\n'<<'\n';   
            empty = false;   // Всё, хотя бы один уже попался
            std::cout << e.name << ' ' << e.surname << '\n';   // Выведем имя сотрудника в строчку
        }
    }
private:
    const double s;   // Значение, с которым сравниваем
    bool empty;        // Признак того, что найден хотя бы один человек
};
 
// Теперь, после этого всего, внутри main достаточно написать так:
// std::for_each(List.begin(), List.end(), CheckSalary(sal));
// и на печать либо выскочит полный список людей с заданным жалованьем, 
// либо сообщение, что таковых не найдено
 
Текущее время: 19:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru