gpt4 book ai didi

C++/Boost 无需手动循环将列表项插入 map

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:18 27 4
gpt4 key购买 nike

在 C++ 程序中,我有一个 std::list 和 std::map(尽管我实际上使用的是 boost:unordered_map),我想知道一种将列表中的所有元素插入 map 的优雅方法.我希望键是对列表中的元素进行方法调用的结果。

例如我有:

std::list<Message> messages = *another list with elements*;
std::map<std::string, Message> message_map;

我想将列表中的所有元素插入到映射中,键为 message.id(),用于 messages 中的每条消息。

有没有一种方法可以在不遍历列表并手动执行的情况下执行此操作? 我不会使用 C++11 但出于兴趣,我仍然对 C++11 解决方案感兴趣。我可以使用 boost。

谢谢。

最佳答案

C++11 解决方案:您可以使用 std::transformstd::list 元素转换为 std::map 元素:

std::transform(message.begin(), messages.end(),
std::inserter(message_map, message_map.end()),
[](const Message& m) { return std::make_pair(m.id(), m); });

通过传递函数指针而不是 lambda,可以使用 C++03 完成等效操作。

关于C++/Boost 无需手动循环将列表项插入 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16379120/

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