Форум программистов, компьютерный форум 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, не получается подробнее

Показать сообщение отдельно
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
04.08.2010, 04:13  [ТС]     STL std::set, std::pair, std::make_pair
Теперь выбивает вот такое:
error C2662: 'test::tree::getAge' : cannot convert 'this' pointer from 'const test::tree' to 'test::tree &'
Код в полном обьеме.
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <algorithm>
#include <iostream>
#include <vector>
#include <string>
#include <set>
 
#define SQR(a) ( (a) * 1ll * (a) )
 
namespace test {
 
    ////////////////////////////////////////////////////////////////////////////////////
    //
    // Class Tree
    //
    ////////////////////////////////////////////////////////////////////////////////////
 
    class tree {
        double age, height;
        std::string name;
        static double incA, incH;
    public:
        tree(std::string);
        // исполнение действия расти, при котором на константы увеличиваются «высота» и «возраст»
        void Incrementation();
        // получение ...
        std::string getName();
        // изменение названия (прямое изменение поля класса недопустимо).
        void setName(std::string);
        // получение возраста дерева без возможности его изменения
        double getAge();
        // получение высоты дерева без возможности его изменения
        double getHeight();
        // копирование объектов
        tree operator = (const tree&);
        // сравнение объектов
        bool operator == (tree);
        bool operator > (tree);
        bool operator < (tree);
    };
 
    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(){
        return this->name;
    }
    void tree::setName(std::string val){
        this->name = val;
    }
    double tree::getAge(){
        return this->age;
    }
    double tree::getHeight(){
        return this->height;
    }
    tree tree::operator = (tree a) {
        this->name = a.getName();
        this->age = a.getAge();
        this->height = a.getHeight();
        return *this;
    }
    bool tree::operator == (tree a){
        return this->height == a.getHeight();
    }
    bool tree::operator > (tree a){
        return this->height > a.getHeight();
    }
    bool tree::operator < (tree a){
        return this->height < a.getHeight();
    }
 
    ////////////////////////////////////////////////////////////////////////////////////
    //
    // 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();
        // получение отсортированного по названиям списка деревьев в виде указателей на объекты
        std::vector<tree*> getTreesList();
        // получение количества деревьев в круговой области с центром (x0,y0) и радиусом r
        int getTreesInCircle(int, int, int);
        // поиск дерева по заданному названию и возврат указателя на объект
        tree* getTreeByName(std::string);
    };
 
    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(){
        return this->list.size();
    }
    std::vector<tree*> forest::getTreesList(){
        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(&(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;
    }
    tree* forest::getTreeByName(std::string Name){
        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;
    }
 
    // end namespace "test"
};
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru