由 std::map<>
对象管理的数据没有直接嵌入到 std::map<>
对象中 - 相反,它是动态分配的,std::map<>
对象包含指向部分数据的指针,因此它可以开始搜索。当您 file.write
时,您只是写出管理对象而不是节点 - 这将永远不会持久化数据。之后:
std::map<std::string,std::pair<T,int>> mymap;
mymap.emplace("one",{1.0,1});
mymap.emplace("two",{2.0,2});
你可以想象正在使用的内存区域和它们之间的指针是这样的:
mymap:{size=2; p_root_=&MMM; p_least_=&AAA; p_greatest_=&ZZZ;}
| / /
...on the heap... +--|------------- ---------
| v /
| MMM /
v / \ /
ZZZ AAA<-----------/
如果您想拥有一个记住最后 3 个值的容器,请考虑使用循环缓冲区(或者如果您不太关心性能 - 甚至更容易,std::deque<>
),尽管您将必须存储键和值并手动搜索 3 个值以找到键的匹配项。
本文链接:https://www.f2er.com/4371.html