Я работаю над 2 файлами, позволяет брать файлы file1.cpp и file2.cpp. file1.cpp содержит:Как создать статическую карту в C++?
//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;
}
}
Я пытаюсь инициализировать MyMap один раз, когда для запуска контура в первый раз после этой инициализации не должно произойти, как это происходит в статической переменной.
Но это поведение не отображается и каждый раз, когда mymap получает инициализацию.
Я не хочу, чтобы «id» получал инициализацию каждый раз.
Как работать?
изменения MyMap на указатель карты и вставить проверку перед назначением его в 'весело()' – buygrush
Вы можете перенести статические карты декларации в FUNC поэтому он будет создан только один раз: 'void fun() {static std :: map mymap = mymap1; // ...} ' –
NathanOliver
Сделал то же самое только сейчас .. Проверяю, что .. @buygrush –