Categories

See More
Popular Forum

MBA (4887) B.Tech (1769) Engineering (1486) Class 12 (1030) Study Abroad (1004) Computer Science and Engineering (988) Business Management Studies (865) BBA (846) Diploma (746) CAT (651) B.Com (648) B.Sc (643) JEE Mains (618) Mechanical Engineering (574) Exam (525) India (462) Career (452) All Time Q&A (439) Mass Communication (427) BCA (417) Science (384) Computers & IT (Non-Engg) (383) Medicine & Health Sciences (381) Hotel Management (373) Civil Engineering (353) MCA (349) Tuteehub Top Questions (348) Distance (340) Colleges in India (334)
See More
( 8 months ago )

How to access keys of maps using a string pointer

General Tech Bugs & Fixes
Max. 2000 characters
Replies

usr_profile.png
Rukhsar Fatima

User

( 8 months ago )

A pointer like "M" will not match later another pointer "M" or a &string("M"). It's the same type (const char*) but a different value, and you use as a key the value of the pointer which is different.

map<string*,int> x;
x["m"] = 5;
int y = x["m"]; // y not necessarily 5.  

"m" in line 3 and "m" in the previous line have different pointer values. The compiler might optimize with string pooling, leading you to believe that it worked, but it is actually a hard to find bug.

usr_profile.png
Alex Wilson

User

( 8 months ago )

I am trying to access a map by using a string* pointer instead of its actual value. Whenever I use this pointer the maps key is returning the wrong value.

mymap_comp_for_c.insert(pair<string, unsigned short int>("M", 0b1110000));

_c_parts[1] holds the value of M

but value+= mymap_comp_for_c[c_parts[1]] is returning the incorrect integer that is assigned to "M"

what's your interest


forum_ban8_5d8c5fd7cf6f7.gif