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


Автор: SectoR 17.2.2008, 15:56

Здраствуйте...

Имеется STL-контейнер map, в котором хранятся пары
строка(string) и число(float)

Вот код:
Код

#include<iostream>
#include<fstream>
#include<stdlib>
#include<map>
#include<vcl>

#define SIGN_COUNT 3
#define MAX_ITEMS 5
#define MIN_SUP 0.5
#define TRANSACT_COUNT 3

using namespace std;

typedef map<string, float> maptype;
maptype L1;
//---------------------------------------------------------------------------

void initialize()
{
  char it_buf[SIGN_COUNT];
  for(int i=1; i<MAX_ITEMS+1; i++)
  {
    itoa(i, it_buf, 10);
    L1[it_buf]=0.0;
  }
}
//---------------------------------------------------------------------------

void print()
{
  for(maptype::iterator i=L1.begin(); i!=L1.end(); i++)
  {
    cout<<(*i).first<<" "
        <<(*i).second<<endl;
  }
}
//---------------------------------------------------------------------------


Допустим есть функции, которая
прогоняет все пары и прибавлеяет к числу первой пары 1, к числу второй - 2 и т.д.

Вот смотрите теперь сюда:
Код

  int k=0;
for(maptype::iterator i=L1.begin(); i!=L1.end(); i++)
    {

        (*i).second=(*i).second+k; k++;
    }

  for(maptype::iterator i=L1.begin(); i!=L1.end(); i++)
  {
     *(i).second = *(i).second / TRANSACT_COUNT;

     //тут компилятор пишет, что second не является членом)))
     //как так, если выше аналогичный цикл for
  }

Автор: Fazil6 17.2.2008, 16:06
ну и что тебе непонятно?
посмотри как ты скобки в первом и втором случае поставил...
вообще зачем разыменовывать итератор? пиши как с указтелем и все
Код

i->second

Автор: SectoR 17.2.2008, 16:36
бывает же - не заметил... засиделся!

Автор: JackYF 18.2.2008, 15:02
SectoR, помечай тему решённой smile

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