gpt4 book ai didi

c++ - 如何将结构图切片为具有相同键的子集?

转载 作者:行者123 更新时间:2023-12-03 07:00:20 24 4
gpt4 key购买 nike

我有一个包含多个命名值的结构映射,如下所示:


struct MyData {
MyType dataA;
std::string dataB;
int dataC;
};

typedef std::pair<std::string, MyData> PairType;

std::map<PairType::first_type, PairType::second_type> dataMap;
这是在从库调用函数的编译单元的头文件中定义的。
因为库函数不知道我的类型定义,所以我不能直接传递 dataMap。
该函数实际上只需要 dataA struct 成员并且已经知道 MyType ,所以我可以通过 std::map<std::string, MyType>反而。
从结构映射中剪切我需要的数据并将其保存到具有相同键但仅来自 dataA 的类型和值的新映射中的最优雅方法是什么? ?
最好用于 C++0x 而不使用 boost 或其他外部库,但也欢迎用于教育目的的更新标准的解决方案。
我基本上是在寻找相当于 Python 的
newDict = {key:value.dataA for (key,value) in oldDict.items()}

最佳答案

您可以使用基于范围的 for 循环来轻松制作拷贝。那看起来像

std::map<std::string, MyType> my_type_map;
for (const auto& pair : dataMap)
{
my_type_map.emplace(pair.first, pair.second.dataA);
}

关于c++ - 如何将结构图切片为具有相同键的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64715908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com