Форум программистов, компьютерный форум 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, 13:04     STL std::set, std::pair, std::make_pair
Цитата Сообщение от outoftime Посмотреть сообщение
как называются разделы, в которых у меня были ошибки?
во-первых, как выше уже говорилось, пытайтесь всунуть const где только можно.
если метод не будет изменять данные класса, определяйте его как const. если аргумент метода не будет изменяться в методе - определяйте его как const.
теперь пройдемся по вашему коду. конструктор класса
C++
1
tree(std::string);
конструктор класса дерево принимает строку - имя дерева. почему она не константа? она же всего лишь копируется в строку в классе.
на этом же месте, почему аргумент является объектом, а не ссылкой на объект? это лишнее копирование. раз аргумент у нас константный, то изменяться он не может, следовательно можно смело передавать строку по ссылке, а не по значению.
в итоге применив все замечания мы получаем нормальный прототип конструктора:
C++
1
tree(const std::string&);
далее рассмотрим метод, который возвращает имя
C++
1
std::string getName();
он тожн должен быть константным, ведь он не изменяет данные класса. вернее не должен их изменять. в итоге получаем такой прототип:
C++
1
std::string getName() const;
в общем вот эти два косяк разбросаны по всему классу. то есть методы getHeight, getAge - тоже должны быть определены константой, так же как и операторы сравнения. операторы сравнения кстати так же должны принимать константную ссылку на объект типа дерево, а не сам объект.

ну и две неинициализированные статические переменные. кстати совершенно незачем инициализировать их в конструкторе. я забыл совсем про этот момент то есть заметил только сейчас. инициализируйте их вот так, только значения свои поставьте:
C++
1
2
double tree::incA = 5.0;
double tree::incH = 5.0;
и если они не изменяются может стоит сделать их константами

в классе леса в принципе все те же самые косяки, за исключением одного метода. в методе getTreeList пришлось сделать const_cast. чтобы указатель все таки скопировался. не знаю зачем кстати этот метод. с указателями в С++ лучше не баловаться.
 
Текущее время: 22:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru