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

Требуется собрать кучу object в один контейнер и искать их по object_name - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужно продублировать первое чётное число в односвязном списке http://www.cyberforum.ru/cpp-beginners/thread1232561.html
Написал вот такой код, он рабочий, но никак не пойму, что нужно сделать, чтоб выполнялась поставленная задача. Прошу помочь. #include "stdafx.h" #include <iostream> #include <string.h> #include <conio.h> using namespace std; //описание структуры struct point { int num;//информационное поле
C++ Как циклически организовать задание значений, пока не получится то, что надо Делал игру кубики нужно сделать ничью что бы когда выбивало два одинаковых значений перекручивало сначала если нету два одинаковых значения переходил к следующему сигменту кода http://www.cyberforum.ru/cpp-beginners/thread1232542.html
C++ Запись в ofstream - разобрать код
Доброго времени суток объясните как это работает? char msg; //что то записали в msg не важно как, суть в том что туда писали без символа \0, //и данных может быть меньше 255(больше 255 не может быть), // так же знаем сколько записали iMsgSize ofstream File; File.open("bla bla"); File<<msg; File.flush();
C++ Бинарный поиск (самое левое вхождение)
int binsearch (int a,int key, int l, int h) { int medium; medium=(l+h)/2; if (l>h) return (l); if (a>key) return (binsearch (a,key,l,medium-1)); else return (binsearch (a,key,medium+1,h)); } Данный алгоритм находит самое правое вхождение элемента. Как найти самое левое?
C++ Ошибка "C2065: сout: необъявленный идентификатор" http://www.cyberforum.ru/cpp-beginners/thread1232434.html
Привет! Создала свою первую программу,правда с помощью книги. Вылезла ошибка: \convert_main.cpp(32) : error C2065: сout: необъявленный идентификатор. Помогите разобраться. // // Программа для преобразования // Градусов Цельсия в градусы Фаренгейта: // Fahrenheit = NCelsius * (212 - 32)/100 + 32 // #include <cstdio> #include <cstdlib>
C++ Нужен алгоритм, который будет считать формулу, введённую пользователем в виде строки Задача такая: пользователь вводит с клавиатуры формулу, с заведомо неизвестным количеством переменных, а программа должна эту формулу посчитать. Я так понимаю, что строку нужно как-то отсортировать и исходя из тех переменных что будут в формуле создать динамические переменные, или динамический массив. Но только вот что-то совсем не приходит в голову как это всё реализовать) подробнее

Показать сообщение отдельно
Renji
1533 / 981 / 239
Регистрация: 05.06.2014
Сообщений: 2,951
23.07.2014, 17:18  [ТС]     Требуется собрать кучу object в один контейнер и искать их по object_name
А если и на него указатель завести? Т.е. если создаем proxy с object != nullptr, то используем указатель на object->name, иначе (как при поиске) - полноценный std::string.
Костыль, конечно, но похоже это единственное решение без написания своего std::set.
Ну, тогда boost::unordered_set как вариант, там методу find можно предикат передать
Попробовал. find скушало std::string как аргумент... И все равно полезло преобразовывать его в object.
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
#include<string>
#include<boost/unordered_set.hpp>
using namespace std;
struct object
{
    bool operator<(const object&o)const{return object_name<o.object_name;}
    bool operator==(const object&o)const{return object_name==o.object_name;}
    bool operator<(const std::string&str)const{return object_name<str;}
    bool operator==(const std::string&str)const{return object_name==str;}
    std::string object_name;
    char some_data[100500];
private://чтоб нельзя было выполнить преобразование строки в object
    object(const std::string&_object_name):object_name(_object_name){}
};
 
struct hash_value{int operator()(const object&str)const{return str.object_name.size();}};
struct compare{bool operator()(const object&o1,const object&o2)const{return o1==o2;}};
 
int main()
{
    boost::unordered_set<object> my_set;
    const std::string key("1234");
    my_set.find<std::string,hash_value,compare>(key,hash_value(),compare());
    return 0;
}
error: 'object::object(const string&)' is private. То есть, буст полез выполнять преобразование и обломался.
 
Текущее время: 11:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru