I am working on 2 files, lets take file1.cpp and file2.cpp. file1.cpp contains:
//File 1
#include <iostream>
#include <map>
struct category {
int id;
};
void fun();
std::map<char, category> mymap1;
static std::map<char, category> mymap;
std::map<char, category>::iterator map_iter;
std::map<char, category>::iterator map_iter1;
int main ()
{
mymap1['a'] = {20};
mymap1['b'] = {30};
mymap1['c'] = {40};
for(int i = 0;i < 4; i++)
fun();
return 0;
}
//File 2
#include<file2.h>
void fun()
{
mymap = mymap1;
map_iter = mymap.begin();
for (map_iter1 = mymap1.begin(); map_iter1 != mymap1.end();++map_iter1)
{
map_iter->second.id = map_iter1->second.id - map_iter->second.id;
std::cout<<map_iter1->second.id<<" " <<map_iter->second.id;
map_iter->second.id=map_iter1->second.id;
++map_iter;
}
}
I am trying to initialize mymap once when for loop run for the first time after that initialization should not happen as it happen in static variable.
But this behaviour is not shown and each time mymap is getting initialize.
I don't want the "id" getting initialize every time.
How to work?