如何获取C++ struct node中仅存单个键值对的map的键?
C++ 获取仅含单个元素的map的键的方法
因为你已经明确data成员对应的std::map只会存在1个键值对,所以可以直接通过首迭代器获取键,有以下几种常用实现方式:
方法1:直接通过首迭代器取值(所有C++版本通用)
std::map的迭代器指向的是std::pair<const KeyType, ValueType>类型的元素,其中first成员对应键,second成员对应值:
node t; // 先判空避免map为空时触发未定义行为 if (!t.data.empty()) { std::string target_key = t.data.begin()->first; }
方法2:C++17 结构化绑定写法(语法更直观)
如果你使用的编译器支持C++17及以上标准,可以用结构化绑定同时获取键和值,可读性更高:
node t; if (!t.data.empty()) { auto [key, val] = *t.data.begin(); // 此处key即为你需要的map键 }
方法3:范围for遍历(兼容C++11及以上版本)
因为map只有一个元素,范围for只会执行一次,也可以拿到目标键:
node t; std::string target_key; for (const auto& entry : t.data) { target_key = entry.first; break; // 单次遍历后直接跳出,无额外性能开销 }
内容的提问来源于stack exchange,提问作者s1rGAY
相关产品推荐
相关产品推荐

