Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带jsoncpp的有序元素_C++_Json_Qt - Fatal编程技术网

C++ 带jsoncpp的有序元素

C++ 带jsoncpp的有序元素,c++,json,qt,C++,Json,Qt,我使用jsoncpp解析config.json。It库使用std::map来包含对key:value。地图是无序的容器。现在我需要按照元素在文件中的顺序解析元素(不要问为什么,这不是我的奇想) 我搜索了一下,发现了 您可以编写自己的解析器或重写jsoncpp以使用列表而不是映射 我真的可以用jsoncpp中的映射替换列表吗 或者,您可能会告诉我一些想法,当我使用jsoncpp解析文件时,如何保存元素的顺序?我认为您需要使用另一个容器,而不是jsoncpp中的QMap来维护值的插入顺序 不幸的是,

我使用jsoncpp解析config.json。It库使用std::map来包含对key:value。地图是无序的容器。现在我需要按照元素在文件中的顺序解析元素(不要问为什么,这不是我的奇想)

我搜索了一下,发现了

您可以编写自己的解析器或重写jsoncpp以使用列表而不是映射

我真的可以用jsoncpp中的映射替换列表吗


或者,您可能会告诉我一些想法,当我使用jsoncpp解析文件时,如何保存元素的顺序?

我认为您需要使用另一个容器,而不是jsoncpp中的QMap来维护值的插入顺序

不幸的是,Qt没有这样的数据类型,您必须自己做,因为QMap和QHash都不维护插入顺序

如果你能使用Boost,它会有一个无序的地图

见:


此信息对您的问题没有帮助,但绝对是一个有序容器,但它可能不是按您喜欢的方式排序的。您可以使用json spirit来解析它,我认为它可以配置它使用的数据类型是什么?FWIW您可能很难理解这一点,因为我认为JSON的指定使得key:value对没有逻辑顺序。如果你真的需要把它放在一个列表或一个向量中,你最好只是。。。不要问为什么,这不是我的异想天开——如果是别人的异想天开,告诉那个人他们使用JSON不正确。JSON对象没有顺序(这意味着实现使用的任何顺序都可以)。如果您想要一些顺序重要的东西,请使用JSON数组。一个负责任的程序员有责任拒绝不好的需求。Cou当然可以用
std::list
替换
std::map
,但最有可能的是,您还必须修改
Json::Value::operator[]
以执行线性搜索而不是地图查找,至少是这样。