Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Работа с файлами (подсчитать количество слов в файле, содержащих нечетное количеством букв) Первый раз работаю с файлами и тут у меня проблемы. После компиляции выводит неправильный ответ и выбивает: 'Lab 8.exe': Loaded 'D:\Projects\C++\Training\Lab 8\debug\Lab 8.exe', Binary was not built with debug information. 'Lab 8.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', No symbols loaded. 'Lab 8.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', No symbols loaded. The program ' Lab 8.exe:... https://www.cyberforum.ru/ cpp-beginners/ thread903962.html C++ ДИНАМИЧЕСКИЕ МАССИВЫ.Найти номер строки, в которой сумма отрицательных нечетных элементов самая большая
не знаю почему не правильно считает ведь все правильно сделал?(( подскажите кто нибуть Пожалуста #include <iostream> #include <cmath> #include <cstdio> #include <cstdlib> #include <iomanip> using namespace std; int main() { int n, m, k;
C++ Как спростить код ? рекурсия (ввести последовательность чисел (окончание ввода - 0) и вывести их вобратной последовательности) https://www.cyberforum.ru/ cpp-beginners/ thread903901.html
#include <iostream> using std::cout; using std::endl; using std::cin; const int n=100; int arr = {}; int i = 0; int count = 0;
C++ Дан массив. Выберите из него все элементы, которые встречаются в массиве наибольшее число раз СРОЧНО!!! ПОМОГИТЕ ПОЖАЛУЙСТА,ОЧЕНЬ НУЖНО!!! ЗАРАНИЕ БЛАГОДАРЮ!) Дан*массив.*Выберите*из*него*все*элементы,*которые*встречаются*в*массиве*наибольшее*число*раз. https://www.cyberforum.ru/ cpp-beginners/ thread903892.html
C++ В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость.
Ребят, помогите пожалуйста, 29 июня экзамен по "Основы программирования",кто сколько сможет сделать задач, тем всей группой поставим "+" пожалуйста:cry:, Заранее, СПАСИБО.... a)Требования: 1. Подготовить текстовый файл с входными данными в редакторе. 2. Составить алгоритм программы. 3. Выделить функции ввода, обработки и вывода. 4. Входные данные прочитать из файла. 5. Выполнить...
C++ Ввести с клавиатуры знак Зодиака. Найти в файле запись с таким знаком и вывести его Ребят, помогите пожалуйста, 29 июня экзамен по "Основы программирования",кто сколько сможет сделать задач, тем всей группой поставим "+" пожалуйста:cry:, Заранее, СПАСИБО.... a)Требования: 1. Подготовить текстовый файл с входными данными в редакторе. 2. Составить алгоритм программы. 3. Выделить функции ввода, обработки и вывода. 4. Входные данные прочитать из файла. 5. Выполнить... https://www.cyberforum.ru/ cpp-beginners/ thread903886.html
C++ Дан массив размера N. Определить количество его промежутков монотонности СРОЧНО ПОМОГИТЕ ПОЖАЛУЙСТА,ОООЧЕНЬ НУЖНО!!!)ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО!!! ПРОСТО СЕССИЯ НАЧАЛАСЬ,НИЧЕГО НЕ УСПЕВАЮ)) 1.Дан*массив*размера*N.*Определить*количество*его*промежутков*монотонности*(то* есть*участков,*на*которых*его*элементы*возрастают*или*убывают). https://www.cyberforum.ru/ cpp-beginners/ thread903882.html Поиск вхождений в текст C++
Поиск вхождений в текст #include "mpi.h" #include <stdio.h> #include <math.h> // Функция для промежуточных вычислений int func(int M, int N){ int i=-1; int j; char s = {"dh Hello sag Hello df H sag No sag iosl dfsag"}; char p={"sag"};
C++ Получить значения из картинки не создавая ее с библиотекой libnoise Здравствуйте! имеется код: #include <iostream> #include <noise/noise.h> #include "noiseutils.h" using namespace noise; int main (int argc, char** argv) https://www.cyberforum.ru/ cpp-beginners/ thread903880.html C++ Передача в функцию - ссылки, указатели, константы https://www.cyberforum.ru/ cpp-beginners/ thread903873.html
Вот программа: #include <iostream> void fun(int &rhs) { rhs++; } int main()
Перевод строки из CString в локальную char C++
Здравствутйте. Прошу помощи новичку. Ищу функцию для копирования строки из массива в локальную. Инет всегда ведет приводит за бегор с английским не очень. Help ) Добавлено через 11 минут наверно самый простой способ это при итициализации переменной просто вливать не в массив а вструктару ?
C++ Работа с матрицами (Получить элементы квадратной матрицы, где элементы матрицы зависят от параметров) ЗАДАНИЕ: Получить элементы квадратной матрицы , где элементы матрицы , зависят от параметров и . Из матрицы А по заданному правилу получить компоненты вектора . Вычислить значения величины B по элементам вектора D. 2. В матрице A найти первую по порядку строку с наибольшей суммой ее элементов и в качестве компонентов вектора D принять эту строку. Ниже приведена формула элементов... https://www.cyberforum.ru/ cpp-beginners/ thread903856.html
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
19.06.2013, 12:14  [ТС] 0

Контейнер hash_map - C++ - Ответ 4742172

19.06.2013, 12:14. Показов 11925. Ответов 55
Метки (Все метки)

Ответ

От в общем кусочек шаблона который есть в книге, пытаюсь создать рабочий каркас, но он не работает, да и по шаблону много непоняток.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//klacc hash_map
#ifndef HASH_MAP
#define HASH_MAP
 
template<class Key,class T,class H=Hash<Key>,
    class EQ=equal_to<Key>,class A=allocator<pair<const Key,T> > >
class hash_map
{
    //как map за исключением
    typedef H Hasher;
    typedef EQ key_equal;
    //typedef int size_type;
    
    hash_map(const T& dv=T(),size_type n=101, const H& hf=H(), const EQ&=EQ() ){}
 
    template<class In>hash_map(In first, In last, const T& dv=T(), size_type n=101,
        const H& hf=H(), const EQ&=EQ()){}
 
};
 
#endif
size_type нету, что это такое? Я думаю наверно его нужно самому определить как int
typedef int size_type????
Когда так сделал ошибка на size_type пропала

Потом тут ошибка const H& hf=H(), const EQ&=EQ() в конструкторах. В чом ошибка? Что не создано шаблонов функций? или что? Походу видно, что конструктора вызываются так это получается классы тогда, а как же с этой фигней в начале шаблона быть с шапкой class H=Hash<Key> или class EQ=equal_to<Key>?

А от еще утета запись меня смущает class A=allocator<pair<const Key,T> >, что это такое? Здесь как стандартный шаблон используется или как? Пока я не дошол что бы тут ошибка вылезла в этой строке, но думаю вылезит, так как явно шаблон allocator и шаблон pair не подключены.

Я пока что хочу создать готовый каркас шаблон без нутрянки с пустыми функция, что бы хотя бы его заставить компилироваться, но ничего не получается .

Добавлено через 35 минут
От щас я полностью вес код что есть в книге набрал, правда он не компилируется, куча ошибок вылазит. Я его оформил в два файла от файл hash_map.h:
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
//klacc hash_map
#ifndef HASH_MAP
#define HASH_MAP
 
//делаем определение шаблона функции хеширования
template<class T> struct Hash : unary_function<T,size_t>
{
    size_t operator()(const T& key) const;
};
//определение функции хеширования она как то вызывается через operator()() хз. почему?
template<class T>size_t Hash<T>::operator()(const T& key)const
{
    size_t res=0;
    cout <<"mu v Hash"<<endl;exit(1);
    return res;
}
//несколько специализаций функции Hash
typedef char Pchar;
 
template<> size_t Hash<Pchar>::operator()(const Pchar& key)const
{
    size_t res=0;
    cout <<"mu v Hash<Pchar>"<<endl;exit(1);
    return res;
}
 
template<> size_t Hash<string>::operator()(const string& key)const
{
    size_t res=0;
    cout <<"mu v Hash<string>"<<endl;exit(1);
    return res;
}
//конец определения шаблона функции хеширования
 
 
//Начало класса hash_map
template<class Key,class T,class H=Hash<Key>,
    class EQ=equal_to<Key>,class A=allocator<pair<const Key,T> > >
class hash_map
{
    //как map за исключением
    typedef H Hasher;
    typedef EQ key_equal;
    typedef size_t size_type;//из функции Hash видно что size_t нужно, а не int
    
    hash_map(const T& dv=T(), size_type n=101, const H& hf=H(), const EQ&=EQ())
        :default_value(dv),b(n),no_of_erased(0),hash(h),eq(e)
    {
        set_load();//все что по умолчанию
        v.reserve(max_load*b.size());//резервирует память для роста
    }
 
    void set_load(float m=0.7,float g=1.6){max_load=m;grow=g;}
 
    template<class In>hash_map(In first, In last, const T& dv=T(), size_type n=101,
        const H& hf=H(), const EQ&=EQ()){}
 
    //Поиск
    mapped_type& operator[](const key_type& k);
 
    iterator find(const key_type&);
    const_iterator find(const key_type&) const;
    //...
 
    void resize(size_type n);//размер хэш таблицы в n
    
    void erase(iterator position);//удаление указуемого элемента
 
    size_type size() const {return v.size()-no_of_erased;}//число элементов
 
    size_type bucket_count() const {return b.size();}//размер хэш таблицы
 
    Hasher hash_fun() const {return hash;}//применяемая хэш функция
    key_equal key_eq() const {return eq;}//равенство
 
private://внутреннее представление
    float max_load;//сохраняем v.size()<=b.size()*max_load
    float grow;//при необходимости меняем размер, resize(bucket_count()* grow)
    size_type no_of_erased;//количество входов в v занятых стертыми элементами
    Hasher hash; //хэш функция
    key_equal eq;//равенство
 
    const T default_value;//умолчательное значение используется операцией []
 
    struct Entry
    {
        key_type key;
        moped_type val;
        bool erased;
 
        Entry* next; //следущий элемент или хз что
 
        Entry(key_type k, moped_type v, Entry* n)
            :key(k),val(v),next(n){}
    };
 
    vector<Entry> v;//истиные входы
    vector<Entry*> b;//хешь таблица указатели внутрь v
    //...
 
};
 
#endif
Файл hash_map.cpp:
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
//opredelenie hash_map
#include <iostream>
using std::cout;
using std::endl;
#include <cstdlib>
using std::exit;
 
template<class Key, class T, class H=Hash<Key>,
    class EQ=equal_to<Key>,class A=allocator<pair<const Key, T> > >
        typename hash_map<Key,T,H,EQ,A>::moped_type&
        hash_map<Key,T,H,EQ,A>::operator[](const key_type& k)
    {
        cout <<"mu v operator[]"<<end;exit(1);
 
        return b[0]->val;
    }
 
template<class Key,class T,class H=Hash<Key>,
    class EQ=equal_ty<Key>,class A=allocator<pair<const Key,T> > >
        void hash_map<Key,T,H,EQ,A>::resize(size_type s)
    {
        cout <<"resize"<<endl;exit(1);
    }
 
template<class Key,class T,class H=Hash<Key>,
    class EQ=equal_to<Key>,class A=allocator<pair<const Key,T> > >
        void hash_map<Key,T,H,EQ,A>::erase(iterator p)
    {
        if(p->erased==false) no_of_erased++;
        p->erased=true;
    }
и файл main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using std::cout;
using std::endl;
 
#include "hash_map.h"
 
int main()
{
    cout <<"Test hash_map"<<endl;
 
    return 0;
}
Ту еще похоже нету структуры для сравнения EQ наверно она так же делается как и функция H хэш, так же структура создается и переопределяется operator()()?

Еще утета от строчка не ясна
template<class T> struct Hash : unary_function<T,size_t>
что такое unary_function<T, size_t>, что это за класс? Почему от нее наследуется struct Hash?

В общем код не компилируется, отето вам и рабочий пример кода из книги, фиг что работает.
В примере кода я логику из функций поубирал, чтобы не мешало разбирать шаблон, Оно и так должно работать без нутрянки, Как оказалось шаблон разобрать очень сложно, одни ошибки.

Добавлено через 5 минут
От при компиляции сразу первая ошибка вылезла в этой строке: template<class T> struct Hash : unary_function<T,size_t>
понятно что не понятно что такое за фигня unary_function<T,size_t> ????????????? Да в примере есть, а что это такое, его определения нету, я от предполагаю мб это функция из СТЛ, Там то написано что struct Hash - это класс функциональных объекто или он создан в виде функционального объекта, от и думаю мб unary_function это какое то средство стандартное для создания функциональных объектов???????

Добавлено через 2 минуты
Кто делал хелп, это ж одна из популярных задач по С++, Хорошо б еслиб кто нить скинул код уже готового отлаженого примера

Добавлено через 15 минут
Еще в этой строке ошибка mopped_type& operator[](const key_type& k);
Отут когда я типы mopped_type и key_type меняю на int, то ошибки нету, видно что типы не определены, как мне их определить? typedef Key key_type; это вроде как бы ясно, а от mopped_type Что это будет? это наверно T ??? хз. Запутанная такая фигня.

Добавлено через 3 минуты
От теперь ошибка в этой строчке iterator find(const key_type&);
Как мне iterator определить? Что это будет указатель на Т* или указатель на ключ? хз.

Добавлено через 1 минуту
Отето вам и пример из книги, просто куски набрасали, которые в куче ничего не работают ппц. Все самому доделыввай, догадывайся.

Добавлено через 3 минуты
Класс должен получится такой же как std::map, по функционалу и красиво оформлен
Давайте активней! Активней! Шнеля! Шнеля!

Добавлено через 1 минуту
Меня эти typedefы не сильно волнуют, больше волнует новое понятие "функциональные объекты", что это?

Вернуться к обсуждению:
Контейнер hash_map C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2013, 12:14
Готовые ответы и решения:

Контейнер на пободия hash_map.
Всем привет. Столкнулся с такой задачей, нужно написать собственный контейнер на подобие hash_map....

Hash_map unordered_map
class P{ public: int x, y; friend bool operator&lt; (const P u, const P v) { if(u.x &lt; v.x)...

<hash_map> is deprecated and will be REMOVED
Ругается на эту часть кода... Помогите, в чем причина, а #ifndef...

Hash_Map Error (C2338)
1) Ребята, начинал учить C++ и как всегда и как у всех, не без проблем. Пробовал писать в DevC++,...

55
19.06.2013, 12:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2013, 12:14
Помогаю со студенческими работами здесь

Stdext::hash_map и std::map
Здравствуйте форумчане! Может ли кто нибудь объяснить мне отличие stdext::hash_map от std::map? В...

Ошибка <hash_map> при выполнении программы
При выполнении простого консольного проекта C++ #include &quot;std_lib_facilities.h&quot; int main() {...

Чем отличается map и hash_map в плюсах?
Чем отличается map и hash_map в плюсах? с hash_map еще не работал, хочу разобраться есть ли...

контейнер
Создать контейнер, в который можно добавлять и удалять методы. Размер контейнера должен...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru