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

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

Войти
Регистрация
Восстановить пароль
 
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
#1

map не работает - C++

22.06.2013, 20:09. Просмотров 406. Ответов 6
Метки нет (Все метки)

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
struct Model3D
{
    struct top
    {
        float x,y,z;
    };
    struct texture_coordinate
    {
        float u, v;
    };
    struct normal
    {
        float x,y,z;
    };
    struct poligon
    {
        top *v[3];
        texture_coordinate  *t[3];
        normal  *n[3];
    };
    struct rgb
    {
        float r , g , b;
    };
    struct Stexture
    {
        GLuint  texture;
        AUX_RGBImageRec *textureI;
        std::string NameFile;
    };
    struct mtl
    {
        float Ns ;
        rgb Ka ;
        rgb Kd ;
        rgb Ks ;
        float d ;
        Stexture tex;
    };
 
    int cv, cvt, cvn, cvp, cf;
    top *v;
    texture_coordinate *vt;
    normal *vn;
    poligon *f;
    std::map <std::string, mtl> NameMTL;
 
};
C++
1
2
3
ifile >>s;
keyS = s;
Model.NameMTL[keyS];
на момент вызова оператора [] переменной Model.NameMTL значение keyS равно "base" , при вызове вылетает ошибка ,что делать?

Добавлено через 7 минут
C++
1
2
3
ifile >>s;
keyS = s;
Model.NameMTL[keyS];
код содержится в функции которая принимает Model так (Model3D &Model)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2013, 20:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос map не работает (C++):

Не работает map<char*, Image*> - C++
class NPC { map&lt;char*, Image*&gt; images; public: void InitImg(char* id, Image* img) { images = img; } virtual void...

Обращение к элементам vector, который находится в map, находящийся в map - C++
Всем добрый день! Имеется такой контейнер. Как обращаться к элементам вектора и как пушбэчить его? map &lt;int,map&lt;int,vector&lt;int&gt; &gt;...

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map? - C++
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...

Как вставить элемент и вывести элементы на экран в map<string, map<string,int>> ? - C++
У меня есть map&lt;string, map&lt;string,int&gt;&gt;, в него надо добавить элементы (типа Ivanov potato 200) Использовать именно map&lt;string,...

Как вставить map в map - C++
есть такой map map &lt; INT64 , map &lt;INT64 , map&lt; wArray , int &gt; &gt; &gt; tMenu; как его заполнить? пробовал так ...

Emplace в std::map. Как добавить элемент в std::map без копирования? - C++
здравствуйте... есть ли способ не писать так: std::map&lt;int, char&gt; ksa; ksa.emplace(std::piecewise_construct, ...

6
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
22.06.2013, 20:09 #2
@Van111, по идее возвращается структура и т.к. это пользовательский тип, то возникает вопрос: а что, собственно вернуть?
1
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
22.06.2013, 20:17  [ТС] #3
@MrGluck, как мне записать в Model.NameMTL
переменную mtl t_mtl с ключом keyS?
C++
1
Model.NameMTL[keyS] = t_mtl
сделал так - не работает
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
22.06.2013, 20:21 #4
C++
1
2
// Model3D::mtl t_mtl;
Model.NameMTL.insert(std::make_pair(keyS, t_mtl));
Добавлено через 32 секунды
Решение с++11
C++
1
Model.NameMTL.emplace(keyS, t_mtl);
1
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
23.06.2013, 12:50  [ТС] #5
@MrGluck, спасибо большое

Добавлено через 14 часов 6 минут
C++
1
2
3
4
5
6
void loadmtl(string NameFile, Model3D &Model, map <string, Model3D::mtl> &NameMTL)
{
        Model2.NameMTL[keyS] =  t_mtl;  // работает
        NameMTL[keyS] =  t_mtl; // ошибка
    Model.NameMTL[keyS] =  t_mtl; // ошибка
}
C++
1
    loadmtl(nameF,Model, Model.NameMTL);
не могу понять в чём проблемма!?
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
23.06.2013, 13:07 #6
при вызове loadmtl что за Model туда отдается? это живой объект? Не константный? какие конкретно ошибки возникают? в стек вызовов посмотрите. Может быть вы не весь код показали и у t_mtl есть какие-то не дефолтные конструкторы\деструкторы\операторы=?
1
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
23.06.2013, 13:16  [ТС] #7
ошибку нашёл
это
C++
1
memset(&Model,0,sizeof(Model3D));
Добавлено через 52 секунды
он уничтожал микрофлору map
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2013, 13:16
Привет! Вот еще темы с ответами:

Приведение map<int, B> к map<int, A> - C++
class A {}; class B : public A {}; unordered_map&lt;int, shared_ptr&lt;B&gt; &gt; bs; Как привести bs к unordered_map&lt;int, shared_ptr&lt;A&gt;...

Работа с map<string, map<string, string>> - C++
Всем привет! Что-то запарился в неожиданном месте... Есть тип данных, который выглядит так: map&lt;string, map&lt;string,string&gt;&gt; Мне...

Map of map - C++
Добрый день! Очень понравилось мне работать с map, - до того понравилось, что я теперь переделываю векторы на map. Встретил...

Map'ы - C++
Здравствуйте! Расскажите пожалуйста, как пользоваться map'ами?


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
23.06.2013, 13:16
Ответ Создать тему
Опции темы

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