Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
C++Builder, пишу: TDataSet *MyDataset = new TDataSet(NULL); map<int, TDataSet*> datasets; datasets.insert(value(1, MyDataset)); -- value - это пара TDataSet *DatasetFromMap = datasets; -- в DatasetFromMap оказывается какая-то херня, но не указатель на MyDataset! После некотрых экспериментов выяснил, что при создании map из пары (значение, значение) все ок, по ключу возвращяет то что и предполагалось. При создании map (значение, указатель) по ключу возвращается мусор. Никакой стоящей книги под рукой нет, может кто объяснит такое поведение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 07:49 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
Ошибочка вкралась: Код: plaintext 1. 2. 3. 4. 5. После некотрых экспериментов выяснил, что при создании map из пары (значение, значение) все ок, по ключу возвращяет то что и предполагалось. При создании map (значение, указатель) по ключу возвращается мусор. Никакой стоящей книги под рукой нет, может кто объяснит такое поведение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 08:01 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
Определение value в студию. И я бы еще попробовал Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 08:26 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
по-идеи должно работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 08:43 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
Вот-вот, по идее должно работать. Единственно, что мне не понятно, что такое value. Может это просто map<...,...>::value_type, а может и нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 09:13 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
Отрадно видеть, что тема нашла отклик. value - это map<int, TDataSet*>::value_type datasets=MyDataset; Да, именно так я и поступаю - добавляю пару, тут же по ключу нахожу ее и присваиваю указателю значение датасета, после этого с map можно работать, но ведь некрасиво. Может это глюк реализации Builder'a? Никто таких экспериментов в других средах С++ не проводил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 09:41 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
опять ошибка: Код: plaintext Может это глюк реализации Builder'a? Никто таких экспериментов в других средах С++ не проводил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 09:43 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
очень часто приходится хранить в конейнерах STL указатели - никогда подобных проблем не было. Правда именно TDataSet хранить не приходилось - но думаю в данном случае это не принципиально! P.S. если у вас BCB 6 то с ним идет STL Port - так что врядли это из-за реализации Borland'а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 10:10 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
Ну тогда сумасбродная идея: посмотреть, не переопределен ли оператор new для класса TDataSet. Возможно, переопределен, и каким-то образом это определение конфликтует с STL-евским аллокатором... хм... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 10:19 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
а причем тут оператор new? это больше похоже на отсутсвие конструктора копии у value_type! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 10:31 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
очень часто приходится хранить в конейнерах STL указатели - никогда подобных проблем не было. Правда именно TDataSet хранить не приходилось - но думаю в данном случае это не принципиально! Да, с хранением указателя в векторе тоже никаких проблем. А с мап история такая - указатель может быть любого типа, это неважно, я экспериментровал с AnsiString - та же история, возвращает мусор. а причем тут оператор new? это больше похоже на отсутсвие конструктора копии у value_type! И при создании пары тоже все нормально: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 10:49 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
Поэкспериментировал с map в VC++. Проблем нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 11:24 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
Вы лучше попробуйте Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 12:56 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
ИМХО идея с отсутствием конструктора копирования не катит. Для указателя тупое побитовое копирование как раз должно работать. В тестовом примере нет и намека на то, что область памяти, на которую указывает second уже освобождена... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 14:46 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
вообще-то всегда можно сделать Код: plaintext 1. 2. 3. 4. 5. 6. т.е. для данного класса конструктор копии не определен IMHO проблема все-таки в чем-то другом. Скорее всего в ошибке программиста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 15:08 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. Попробуй так, мы же не видим всю прогу. Может у тебя по ходу это value переопределено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2003, 15:52 |
|
||
|
проблема с map (STL)
|
|||
|---|---|---|---|
|
#18+
Спасибо за советы, господа, но когда я столкнулся с ошибкой, я провел "следственный эксперимент", в отдельном приложении c максимально простым кодом воспользовался map<int, int*> и результат был тот же - по ключу возвращался мусор. Если у кого возможность есть, попробуйте поэкспериментровать в C++Builder 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2003, 07:29 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=475&tid=2036107]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 373ms |

| 0 / 0 |
