Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неугомонный STL! 
:(
    Опции темы
Гость_merfi
Дата 22.8.2005, 02:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть функция, в качестве параметра, которой передаётся указатель на map<int, double>. Так вот я хочу знать что я получу если поочереди буду читать данные из ячеек начиная с адреса в указателе. И как определить конец Map.
  Вверх
chaos
Дата 22.8.2005, 06:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



для чего такое извращение интересно знать? smile
PM WWW   Вверх
Chaos A.D.
Дата 22.8.2005, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 16.1.2005
Где: 09 RUS

Репутация: 6
Всего: 7



map по-моему нельзя читать непосредственно. Потому, что его реализация не определена. Это тебе не vector, где известно, что все данные идут монолитом. Для map-ов чаще всего применяются деревья, но ведь не факт. Может там слоеные списки...
--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
Orlan
Дата 22.8.2005, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 10.6.2004
Где: Киев

Репутация: нет
Всего: 1



То что будет прочитано зависит от реализации класса map. Вообще даже если узнать реализацию лучше так не делать - в следующей версии компилятора может быть реализовано совсем другой механизм. И тогда клюков не обсчетаешся.
--------------------
А вы знали, что терапевт - это 1024 гигапевта или 1048576 мегапевтов
PM MAIL   Вверх
asdf
Дата 28.8.2005, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

Репутация: нет
Всего: 11



по ANSI '98 вроде допустимо обращение по такому типу:
Код

for ( map<int, double>::iterator i=argmap.begin(); i!=argmap.end(); i++ ) {
        *i /= 0;
}

--------------------
... 
PM MAIL   Вверх
Void
Дата 28.8.2005, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



shurick
Результатом разыменования итератора map является std::pair<Key, Value>. Оператор /= для него не определен. Но итерация по map, ес-но, осуществляется только так.

Это сообщение отредактировал(а) Void - 28.8.2005, 20:28


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
asdf
Дата 29.8.2005, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

Репутация: нет
Всего: 11



Void, да, чёта я нето там сделал,

значит работает такой код:
Код

#include <map>
#include <utility> // альтернатива <pair> в BCB6
#include <iostream>

using namespace std;

int main()
{
    map <int, double> bar;
    bar[22]=4.6;
    bar[135]=3.66;
    bar[8888]=1.25;
    for ( map<int, double>::iterator i=bar.begin(); i!=bar.end(); i++ )
    {
        cout << (*i).first << ' ' << (*i).second << endl;
    }
    return 0;
}


Это сообщение отредактировал(а) shurick - 29.8.2005, 18:14
--------------------
... 
PM MAIL   Вверх
pablo
Дата 30.8.2005, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: 4
Всего: 6



Совершенно верно, но вместо операции "точка", предпочтительнее использовать операцию "стрелка".


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1167 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.