c++ - How to insert values in STL map within a loop -
i wanted know how 1 can insert values in map within loop. had used insert() in following code did not worked.
#include<stdio.h> #include<map> #include<utility> using namespace std; int main() { int t; scanf("%d", &t); while (t--) { int n, i; map<char*, int> vote; char name[20], v; scanf("%d", &n); (i = 0; i<n; ++i) { scanf("%s %c", name, &v); vote.insert(make_pair(name, 0)); vote[name] = 0; if (v == '+') vote[name]++; else vote[name]--; printf("%d\n", vote[name]); printf("size=%lu\n", vote.size()); } int score = 0; (map<char*, int>::iterator = vote.begin(); != vote.end(); ++it) { printf("%s%d\n", it->first, it->second); score += it->second; } printf("%d\n", score); } } everytime type new key(string) updates previous one. size of map 1.
how correctly add new element map?
the map keyed pointer (char*). key in code same 1 - name pointer (although change content pointer points on, not change fact pointer not same).
you can use std::string key instead of char*.
changing definition of map (replace char* in std::string) fix problem.
edit: @mcnabb said, change it->first it->first.c_str().
Comments
Post a Comment