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

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

Восстановить пароль Регистрация
 
sandric
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 6
09.05.2010, 22:35     добавление в контейнер без указания типов данных? #1
Привет, у меня проблема. Сразу перейду к коду:

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.

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

Как считать матрицу из файла без указания размерности? C++
C++ Как отсортирвоать контейнер, если его тип определяется по ходу выполнения программы? (динамическая идентификация типов)
Статический контейнер для разных типов C++
C++ чтение из файла и добавление в контейнер
Многомерный символьный(строковый) массив без явного указания разрядности C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
09.05.2010, 22:44     добавление в контейнер без указания типов данных? #2
C++
1
myStruct.insert(pair<const char*, float>(val.c_str(), j));
Не ?
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, они же задаються в шаблоне?
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
09.05.2010, 23:01     добавление в контейнер без указания типов данных? #4
Тогда
C++
1
myStruct.insert(pair<structType::key_type, structType::mapped_type>(val.c_str(), j))
sandric
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 6
09.05.2010, 23:08  [ТС]     добавление в контейнер без указания типов данных? #5
Пасибо, как раз что я искал, поставил те +).
Yandex
Объявления
09.05.2010, 23:08     добавление в контейнер без указания типов данных?
Ответ Создать тему
Опции темы

Текущее время: 14:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru