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

STL std::set, std::pair, std::make_pair - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Распараллеливание программы http://www.cyberforum.ru/cpp-beginners/thread157205.html
Пишу брутер и встал вопрос о добавление многопоточности. Вот у меня есть функция: std::string wbfunc(std::string& hash) { std::string line; std::ifstream f("/home/hromjo/d"); while (std::getline(f, line)) { if (md5(line) == hash) { return line;
C++ Обработка кнопки У меян есть вот такая идея!я решил написать небольшую программку куда пользователь будет вводить свой майл и свой пароль потом при нажатии на клавишу данные будут сохраняться в файл,вот все что я написал это сделать легко а вот как сделать что при нажатии тот файл передался мне на мыло по инету? http://www.cyberforum.ru/cpp-beginners/thread157125.html
C++ Квадрат числа
Как сделать чтобы квадрат находился напротив числа??? #include <windows.h> #include <iostream> using namespace std; void main () { SetConsoleOutputCP(1251); //Квадрат первых десяти положительных чисел. cout<<"\t\t Таблица квадратов."<<endl;
Нужен пример перехвата API функции на Detours!!! C++
В долгих поисках пришел к выводу использовать Detours для отлова пакетов. Где можно найти рабочий исходник отлова какой-нибудь функции (желательно Send/Recv)?
C++ Программа в OpenCL http://www.cyberforum.ru/cpp-beginners/thread156513.html
Братцы, сроки поджимают и нужно закончить программульку одну. В общем, делал-делал и пришёл я к тупику на данном этапе... не знаю, что и делать. Изначально программа должна была высчитывать с помощью ЦПУ корень из числа. На выходе получается большое отрицательное число. Помогите пожалуйста исправить ошибки. #include <stdafx.h> #include <CL/cl.h>
C++ Ввод массива Помогите пожалуйста с вводом массива неизвестного размера. например мне надо ввести набор чисел 186146. И вывести. Пробовал sizeof, не получается подробнее

Показать сообщение отдельно
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
05.08.2010, 10:03     STL std::set, std::pair, std::make_pair
вот исправленный класс tree. ошибок море было. сейчас еще с оставшимся лесом разберусь.
да, кстати, у тебя есть две переменные статические в классе. они нигде не были определены. я присвоил им значение по 5.0. в коде найдешь - заменишь на свои.
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
        ////////////////////////////////////////////////////////////////////////////////////
        //
        // Class Tree
        //
        ////////////////////////////////////////////////////////////////////////////////////
 
        class tree {
                double age, height;
                std::string name;
                static double incA, incH;
        public:
                tree(std::string);
                // исполнение действия расти, при котором на константы увеличиваются «высота» и «возраст»
                void Incrementation();
                // получение ...
                std::string getName() const;
                // изменение названия (прямое изменение поля класса недопустимо).
                void setName(std::string);
                // получение возраста дерева без возможности его изменения
                double getAge() const;
                // получение высоты дерева без возможности его изменения
                double getHeight() const;
                // копирование объектов
                tree operator = (const tree&);
                // сравнение объектов
                bool operator == (const tree&) const;
                bool operator > (const tree&) const;
                bool operator < (const tree&) const;
        };
 
        double tree::incA = 5.0;
        double tree::incH = 5.0;
 
        tree::tree(std::string Name = ""){
                this->incA = 1 / 12;
                this->incH = 0.24;
                this->name = Name;
        }
        void tree::Incrementation(){
                this->age += this->incA;
                this->height += this->incH;
        }
        std::string tree::getName() const{
                return this->name;
        }
        void tree::setName(std::string val){
                this->name = val;
        }
        double tree::getAge() const{
                return this->age;
        }
        double tree::getHeight() const{
                return this->height;
        }
        tree tree::operator = (const tree& a) {
                this->name = a.getName();
                this->age = a.getAge();
                this->height = a.getHeight();
                return *this;
        }
        bool tree::operator == (const tree& a) const{
                return this->height == a.getHeight();
        }
        bool tree::operator > (const tree& a) const{
                return this->height > a.getHeight();
        }
        bool tree::operator < (const tree& a) const{
                return this->height < a.getHeight();
        }
Добавлено через 10 минут
вот переделанный лес. но честно. я бы на вашем месте переписал код еще раз, только медленно, вдумчиво, с чувством, с толком, с расстановкой. потому сейчас сложно предположить, что из этого выйдет.
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
        ////////////////////////////////////////////////////////////////////////////////////
        //
        // Class Forest
        //
        ////////////////////////////////////////////////////////////////////////////////////
 
        // Нужна для опредиления пользовательской сортировки используя STL
        bool sortFunc(tree *a, tree *b){
                return a->getName() > b->getName();
        }
 
        class forest {
                int x, y;
                std::set<std::pair<tree, std::pair<int, int> > > list;
        public:
                forest(int, int);
                // добавление по случайным координатам (генерируются классом)
                void addTree(std::string);
                // удаление деревьев
                void delTree(std::string);
                // получение количества деревьев в лесу
                int getTreesNumber() const;
                // получение отсортированного по названиям списка деревьев в виде указателей на объекты
                std::vector<tree*> getTreesList() const;
                // получение количества деревьев в круговой области с центром (x0,y0) и радиусом r
                int getTreesInCircle(int, int, int);
                // поиск дерева по заданному названию и возврат указателя на объект
                const tree* getTreeByName(const std::string&) const;
        };
 
        forest::forest(int X, int Y){
                this->x = X;
                this->y = Y;
        }
        void forest::addTree(std::string Name){
                tree newTree(Name);
                std::pair<int, int> position = std::make_pair(rand()%this->x, rand()%this->y);
                std::pair<tree, std::pair<int, int> > newElement(newTree,position); //= std::make_pair<newTree, position>;
                this->list.insert(newElement);
        }
        void forest::delTree(std::string Name){
                bool was = 1;
                std::set<std::pair<tree, std::pair<int, int> > > :: iterator it;
                for (it = this->list.begin(); it != this->list.end(); ++it, (it == this->list.end() ? was = 0 : 0))
                        if (it->first.getName() == Name) break;
                if (was) this->list.erase(it);
        }
        int forest::getTreesNumber() const{
                return this->list.size();
        }
        std::vector<tree*> forest::getTreesList() const{
                std::vector<tree*> res;
                std::set<std::pair<tree, std::pair<int, int> > > :: iterator it;
                for (it = this->list.begin(); it != this->list.end(); ++it)
                    res.push_back(const_cast<tree*>(&(it->first)));
                std::sort(res.begin(), res.end(), sortFunc);
                return res;
        }
        int forest::getTreesInCircle(int X, int Y, int R){
                int res = 0;
                std::set<std::pair<tree, std::pair<int, int> > > :: iterator it;
                for (it = this->list.begin(); it != this->list.end(); ++it)
                        // проверка в целых числа, что-бы не терять точность, но при больщих размерах леса прийдется использовать даблы
                        if ( SQR(it->second.first - X) + SQR(it->second.second - Y) <= SQR(R) ) ++res; 
                return res;
        }
        const tree* forest::getTreeByName(const std::string &Name) const{
                std::set<std::pair<tree, std::pair<int, int> > > :: iterator it;
                for (it = this->list.begin(); it != this->list.end(); ++it)
                        if (it->first.getName() == Name) return &(it->first);
                return 0;
        }
 
Текущее время: 09:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru