Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Неугомонный STL!


Автор: Гость_merfi 22.8.2005, 02:33
Есть функция, в качестве параметра, которой передаётся указатель на map<int, double>. Так вот я хочу знать что я получу если поочереди буду читать данные из ячеек начиная с адреса в указателе. И как определить конец Map.

Автор: chaos 22.8.2005, 06:04
для чего такое извращение интересно знать? smile

Автор: Chaos A.D. 22.8.2005, 08:47
map по-моему нельзя читать непосредственно. Потому, что его реализация не определена. Это тебе не vector, где известно, что все данные идут монолитом. Для map-ов чаще всего применяются деревья, но ведь не факт. Может там слоеные списки...

Автор: Orlan 22.8.2005, 09:25
То что будет прочитано зависит от реализации класса map. Вообще даже если узнать реализацию лучше так не делать - в следующей версии компилятора может быть реализовано совсем другой механизм. И тогда клюков не обсчетаешся.

Автор: asdf 28.8.2005, 18:12
по ANSI '98 вроде допустимо обращение по такому типу:
Код

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

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

Автор: asdf 29.8.2005, 18:12
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;
}

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)