std :: map更改默认顺序

时间:2014-04-01 11:12:33

标签: unordered-map stdmap

我有一个文本文件包含settingsname,settingsvalue和UserName with tabs delimited。在文本文件中,我有超过100个默认设置。如果任何用户更改了任何默认设置,我将不会使用新设置覆盖默认设置。而不是,我通过提到用户名添加了一条新记录。检索数据时,最初我正在加载一个映射容器(字符串,字符串)的默认设置。 (settingsname是键,settingsvalue是Value)然后我在另一个地图中加载特定的用户设置。并使用以下代码覆盖使用用户地图的默认地图。

for(it=usrMap.begin();it!=usrMap.end();it++)
{
    defMap[it->first]=it->second;
}  

文本文件包含特定顺序的数据。它没有按字母顺序排序。在打印默认地图值时,我希望数据按照我在文本文件中指定的顺序。出于某种原因,我无法以有序的方式保留设置名称。我怎么能用地图做到这一点?

1 个答案:

答案 0 :(得分:0)

std :: map不能稳定;它将排序'使用哈希函数的元素。如果订单很重要,您可以将有序键保存在矢量中(例如),并按照矢量建议的顺序访问地图。