webForumDet fria alternativet

Öka en int i en map<>

C/C++

3 svar · 202 visningar · startad av Viktor

Medlem sedan aug. 20021 752 inlägg
Frågan#1

Jag har en map<string,int> där jag vill öka int-en med 1 ofta (dvs göra en ++). Hur kan jag göra det?

Jag har provat med detta

m1=mp.find(str);
if(m1!=mp.end())
	m1->second++;

Men second verkar vara en const int. Men det är något liknande som jag vill göra.

/Viktor

Medlem sedan aug. 20021 752 inlägg
#2

Gick tydligen att lösa såhär istället,

if(mp[str]==NULL)
	mp.insert(make_pair(str,1));
else
	mp[str]++;

/Viktor

Medlem sedan juli 2002581 inlägg
#3

Märkligt, i min värld skall second inte vara konstant.

Fungerar denna kod?

#include <map>

int main()
{
  typedef std::map<int,int> M ;
  M m;
  M::iterator i = m.find(3);
  i->second = 45;
}
Medlem sedan aug. 20021 752 inlägg
#4

Efter lite mer tänkande kom jag på det "riktiga" felet

map<string,int>::[B]const[/B]_iterator m1;

:OO
Japp, hjärnan är inte alltid inkopplad...

/Viktor

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)