Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sandric
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 6
#1

добавление в контейнер без указания типов данных? - C++

09.05.2010, 22:35. Просмотров 539. Ответов 4
Метки нет (Все метки)

Привет, у меня проблема. Сразу перейду к коду:

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
template <class structType>
class CMyExperimentator
{
 
private:
 
    structType myStruct;
 
 
    vector<double> expRes;
 
    int struct_size;
 
    int my_random(int _max)
    {
        return (rand() % _max) + 1;
    }
 
    virtual inline float *getNode(const char *c_val)
    {
        return &myStruct[c_val];
    }
 
    ....
 
public:
 
    CMyExperimentator(int size = 100):struct_size(size)
    {
 
        float *node;
        srand(time(NULL));
        for(int i = 0; i < struct_size; i++)
        {
              
              float j=my_random(100);
 
              string val;
 
              val = i;
 
              //node = getNode(val.c_str());
              //*node = j;
              myStruct.insert(pair<val.c_str(), j>());   //вот тут у меня проблема.
        }
    }
 
    ...
 
};
 
 
 
struct eqstr{
      bool operator()(const char* s1, const char* s2) const {
        return strcmp(s1,s2)==0;
      }
};
 
int main()
{
 
    CMyExperimentator<hash_map<const char*, float, hash<const char*>, eqstr> > *mySheldon = new CMyExperimentator<hash_map<const char*, float, hash<const char*>, eqstr> >();
 
    //CMyExperimentator<map<const char*, float> > *mySheldon = new CMyExperimentator<map<const char*, float> >();
 
    return 0;
}
Я писал класс, который вычисляет число тактов для доступа к переменной для разных типов контейнеров. Все работало через простой доступ по индексу для хеш-таблицы, но для мапа у меня во все ячейки писало одно число, и я так понимаю, нужно юзать insert?
Я конечно могбі передавать шаблоном отдельно тип контейнера и типы для его шаблона, но тогда проблема в разности количества параметров шаблона для разных контейнеров - для хеш таблицы 4, а для мапа - только 2.

Вопщим понимаю, что вопрос глупый, кто знает, отпишитесь пжлст.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2010, 22:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос добавление в контейнер без указания типов данных? (C++):

О структурах. Как в массив записываются элементы разных типов без указания собственно типа? - C++
Имеется следующая программа #include &quot;stdafx.h&quot;; #include &lt;iostream&gt; #include &lt;string&gt; struct Alphabet { int i; char c;...

Статический контейнер для разных типов - C++
Доброго здоровица. Как объявить контейнер для хранении различных типов? Правилен ли такой метод? template &lt;class T&gt; class...

Цикл for без указания шага - C++
Что будет делать цикл for, если не давать ему шаг? Объясните, пожалуйста. Пример кода: for (int i = 1; i &lt; n;) if (arr &lt;= arr)...

Динамический массив без явного указания размера - C++
Самый праздный вопрос, наверное. И, вроде бы, я даже знаю ответ, но все-таки сомневаюсь. В С++ нельзя работать с динамическими...

Как считать матрицу из файла без указания размерности? - C++
Как считать матрицу из файла без указания размерности?

Передать в функцию массив без указания его размера - C++
Вопрос . какой массив мы можем передавать в функцию без указания элемента ?

4
ISergey
Maniac
Эксперт С++
1400 / 911 / 56
Регистрация: 02.01.2009
Сообщений: 2,720
Записей в блоге: 1
09.05.2010, 22:44 #2
C++
1
myStruct.insert(pair<const char*, float>(val.c_str(), j));
Не ?
0
sandric
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 6
09.05.2010, 22:53  [ТС] #3
1
myStruct.insert(pair<const char*, float>(val.c_str(), j));
Не ?
А как я смогу узнать типы const char* и float, они же задаються в шаблоне?
0
ISergey
Maniac
Эксперт С++
1400 / 911 / 56
Регистрация: 02.01.2009
Сообщений: 2,720
Записей в блоге: 1
09.05.2010, 23:01 #4
Тогда
C++
1
myStruct.insert(pair<structType::key_type, structType::mapped_type>(val.c_str(), j))
1
sandric
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 6
09.05.2010, 23:08  [ТС] #5
Пасибо, как раз что я искал, поставил те +).
0
09.05.2010, 23:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2010, 23:08
Привет! Вот еще темы с ответами:

Как сделать ввод матрицы из файла без указания размера - C++
Я сделал ввод матрицы из файла с указанием ее размера(массива),а как сделать ввод матрицы из файла без указания размера (строк и столбцов)....

Можно ли заменить обращение к Union без указания типа переменной? - C++
Можно ли заменить обращение к Union без указания типа переменной?(т.е. без .i .f .str, а просто к &quot;data&quot;) #include &lt;stdio.h&gt; #include...

Многомерный символьный(строковый) массив без явного указания разрядности - C++
В общем нужно прям в коде создать массив, к примеру: char Mmas=&quot;Первая строка. Вторая строка. Третья строка.&quot;; (тут компилятор...

Нужен динамический контейнер, который будет соединять разные переменные, разных типов в блоки - C++
В общем нужен динамический контейнер... который будет соединять разные переменные, разных типов в блоки. Например есть поля Edit и Combo,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru