首页 > 编程语言 >c++进行map数据横向合并

c++进行map数据横向合并

时间:2023-06-03 22:24:34浏览次数:60  
标签:map key3 key2 key1 横向 c++ key6 key5 key4

请帮我写一段代码。 nlohmann::json怎么把三个字典合并到一起,c++ 14标准,并且每个字典的长度不一样,原数据不是json。 例如:

data1 = [{"key1": "a1", "key2": 1}, {"key1": "a2", "key2": 2}]

data2 = [{"key3": "b1",}, {"key3": "b1",}]

data3 = [{"key4": "cc", "key5": 5, "key6": 1.01},{"key4": "cc", "key5": 5, "key6": 1.01}]

最终想要的数据:

data = [

{"key1": "a1", "key2": 1, "key3": "b1", "key4": "cc", "key5": 5, "key6": 1.01},

{"key1": "a1", "key2": 1, "key3": "b1", "key4": "cc", "key5": 5, "key6": 1.01},

]

#include <iostream>
#include <vector>
#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main() {
    // 创建原始数据
    std::vector<std::map<std::string, json>> data1 = {
        {{"key1", "a1"}, {"key2", 1}},
        {{"key1", "a2"}, {"key2", 2}}
    };
    std::vector<std::map<std::string, json>> data2 = {
        {{"key3", "b1"}},
        {{"key3", "b1"}}
    };
    std::vector<std::map<std::string, json>> data3 = {
        {{"key4", "cc"}, {"key5", 5}, {"key6", 1.01}},
        {{"key4", "cc"}, {"key5", 5}, {"key6", 1.01}}
    };

    // 创建结果容器
    std::vector<std::map<std::string, json>> mergedData;

    // 合并数据
    for (size_t i = 0; i < data1.size(); ++i) {
        std::map<std::string, json> mergedItem;
        mergedItem.insert(data1[i].begin(), data1[i].end());
        mergedItem.insert(data2[i].begin(), data2[i].end());
        mergedItem.insert(data3[i].begin(), data3[i].end());
        mergedData.push_back(mergedItem);
    }

    // 转换为 nlohmann::json 对象
    json jsonData = mergedData;

    // 打印最终结果
    std::cout << jsonData.dump() << std::endl;

    return 0;
}

 

标签:map,key3,key2,key1,横向,c++,key6,key5,key4
From: https://www.cnblogs.com/renfanzi/p/17454760.html

相关文章

  • c++ volatile关键字
    volatile是关键字,用来修饰变量作用禁止编译器对变量的优化编译器在优化代码时,会对变量的读取和写入进行优化,例如将变量从内存加载到寄存器中进行操作,以提高执行效率,但是对于volatile修饰的变量,编译器不能进行这些优化,以确保对变量的每次读写操作都是直接从内存中进行的一......
  • c++ 左值和右值以及左值引用和右值引用
    无法令引用重新绑定到另一个对象上,因此引用必须初始化,引用并非对象,只是为一个已经存在的对象所起的另外一个名字因为引用本身不是一个对象,所以不能定义引用的引用inta=10;int&b=a;int&c=b;//此时c不是引用的引用,而是bc都是a的引用判断某个表达式是左值还......
  • Map 接收 @RequestBody,Controller 层可以打印值,但是 mybatis 编译 SQL 语句显示 NULL
    mybatis#{}获取的key是否一致;前端发送请求类型是否与后端接口定义的请求类型一致;前端发送请求与接口请求的类型一致的情况下,检查post请求封装data时是否以get形式传递数据。我的问题是第三个,尤其是后端不报任何错误的情况下,第三种情况极有可能。我把axios.post......
  • 第十届蓝桥杯c++b组国赛题解(还在持续更新中...)
    试题A:平方序列解题思路:直接枚举一遍x的取值,然后按照题目给定的式子算出y,每次取x+y的最小值即可答案为7020代码实现:#include<iostream>#include<algorithm>#include<cmath>usingnamespacestd;#defineintlonglongconstintN=1e4+5;signedmain(){ //记录答案......
  • LRU缓存与LinkedHashMap源码
    今天再刷LeetCode时,遇到了第146题LRU缓存。题目如下:请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量capacity初始化LRU缓存intget(intkey)如果关键字key存在于缓存中,则返回关键字的值,否......
  • Effective Modern C++(一)
    通用引用与右值引用我们以T&&的形式声明一个右值引用,但并不是所有形如T&&形式的声明都为右值引用,他还有可能是一个万能引用。事实上,“T&&”有两种不同的意思。第一种,当然是右值引用。这种引用表现得正如你所期待的那样:它们只绑定到右值上,并且它们主要的存在原因就是为了......
  • IPC横向移动
    IPC横向移动目录IPC横向移动一、IPC介绍二、IPC利用条件三、IPC连接失败原因四、IPC连接常见错误五、IPC配合计划任务横向移动六、IPC配合系统服务横向移动一、IPC介绍IPC(InternetProcessConnection)共享“命名管道”的资源,是为了实现进程间通信而开放的命名管道。IPC可以......
  • Map系列集合:TreeMap集合的原理、使用
        ......
  • 6.3测试题以及参考答案(C++基础)
    测试题总分120,时间180分钟一、单选题(每题2分,共40分)C++中表示大于等于用以下哪个关系运算符(B)A.>B.>=C.≥D.>&=C++中,不等于用以下哪个关系运算符(C)A.<>B.≠C.!=D.==表达式7%2的值是多少(B)A.0B.1C.2D.-1要计算变量B的......
  • 理解C++底层细节
    理解C++底层细节C++是一门广泛使用的高级编程语言,其语法优雅且易于使用,拥有着强大的面向对象特性以及丰富的标准库。但是,在理解C++的本质之前,我们需要先了解C++的底层细节。C++中的内存管理在C++中,内存管理和分配是至关重要的内容。常见的内存管理问题包括内存泄漏、内存溢出和野指......