std :: map是C ++标准库中的一个类。它是一个已排序的关联容器,包含具有唯一键的键值对。搜索,删除和插入操作具有对数复杂性。地图通常实现为红黑树。
c++ std::map::emplace() 不起作用,但operator[] 可以
#包括 #包括 #包括 #包括 #包括 #包括 使用命名空间 std; // 活跃链表 斯特...
具有 unique_ptr std 映射的单例类在编译时抛出错误
以下代码无法编译,我无法弄清楚为什么! /* ------------------------------------------------ --------------- */ /* 包括 */ #包括 #包括...
使用 `struct` 而不是 `std::pair` 迭代 `std::map`
很长一段时间以来,我一直想用结构而不是 std::pair 来迭代 C++ 映射。原因是我总是发现pair.first和pair.second是不明确的 所以我尝试了这段代码: 地图<
为什么 const std::pair& 的 .second 引用返回第二个值的副本而不是 const 引用?
我正在尝试获取指向 std::map 中每个值的 const 指针。我尝试了 constpair<...>& 及其 .second 属性,但得到了错误的指针。然而,const_ierator 是正确的。 一块...
从 std::map() 获取具有 unique_ptr 成员的对象
我试图从 std::map (之前填充的)获取一个类对象(带有 unique_ptr 成员),并且发生错误。这是代码: 类.hpp #ifndef CLASSMETHODNOTCALLED_CLASSES_HPP #定义
在 std::map() 中使用智能指针时调用隐式删除的复制构造函数
我试图将类对象放入 std::map 中,并且发生错误。这是代码: 类.hpp #ifndef CLASSMETHODNOTCALLED_CLASSES_HPP #define CLASSMETHODNOTCALLED_CLASSES_HPP #包括&q...
c++11 std::map 包含大量元素不起作用。此外,我需要使用 upper_bound 函数,但插入函数卡住了
好吧,我需要你们的帮助..我正在与 c++11 中的 std::map 作斗争,因为我需要在 for 循环期间存储两个以上的输出。为了更清楚,我应该使用这样的东西: std::地图&...
我一直在尝试使用 extract() 有效地取出密钥并替换它,正如文档所说是可能的。但是,我无法使用“常规”迭代器来编译我的代码,...
C++ 序列容器 (向量、forward_list、列表和双端队列) 都有一个分配方法。 例如, std::vector 有 (引用 cppreference.com): void 分配( size_type count, const T& v...
下面的测试代码片段(CHECK 是来自测试框架的宏,工作正常): typedef std::map M; typedef M::value_type VT; 常量 VT v0; 毫米; 检查(mm.begin() == mm.insert(v0)...
数据结构要求 设计一个支持以下操作的数据结构: 插入:插入键值对。 删除:删除键值对。 检查 Top K:给定一个整数 k a...
在 C++ 中的 std::map 中查找范围边界 `[x,y]` 中存在的最近的键
我需要在给定范围 [x,y] 内找到地图中最近的键。我正在尝试下面 std::map m{ {-2,'B'}, {1, 'C'}, {2, 'A'}}; auto itCurrent = m.lower_bound(-3); 自动下一个 = m.
在 C++ 中的 std::map 中查找存在于“查询范围”中的 Key 范围
如何查找某个范围内是否有任何键。我正在尝试以下: 目标是在查询范围[-3,3]内获得-2和2作为关键边界范围(地图中实际存在的) 标准::地图<...
按照这个问题中不扩展 std 容器的建议,我正在创建自己的类型并使用 std::map 作为类属性。 我正在重新创建我想要的公共接口函数...
我面临一个问题,需要为 ros2 的 topic_name 和 msgs 制作一个 std::map,例如 // 这里的问题是,如何声明 std::map,即 ref_maps; 标准::地图 我面临一个问题,需要为 ros2 的 topic_name 和 msgs 制作一个 std::map,例如 // here is the question, how to declare the std::map, i.e. ref_maps; std::map<std::string, std::tuple<SomeUncertainType, AnotherUncertainType>> ref_maps; // one type msgType1 msg1_t; // = ...with some value assigned; msgType1::SharedPtr msg1_p; //-> ...with some value assigned, and notice, here is a SharedPtr std::string topic_name1 = "t1" // another type msgType2 msg2_t; msgType2::SharedPtr msg2_p; std::string topic_name1 = "t2" ref_maps[t1] = std::make_tuple(msg1_t, msg1_p); ref_maps[t2] = std::make_tuple(msg2_t, msg2_p); 这是否可能或任何其他方法可以实现类似的结果? 与某些基类不同的是 ros2 msgTypes( 和 ::SharedPtr) ,这样我就可以声明 ref_maps ,如下所示: std::map<std::string, std::tuple<MsgTypeBase, MsgTypePtrBase>> ref_maps; 如果需要使用一个类,该类的实例在任何给定时间都保存一种类型的值或其替代值(前提是它们已知),则标准解决方案是std::variant。 它本质上代表了一个类型安全的联合,它提供了一组成员和非成员函数,使一种类型和另一种类型之间的切换更简单。此外,值始终是静态分配的,避免了动态分配的内存和性能开销。 std::map<std::string, std::pair<std::variant<T1, T2>, std::variant<T1, T2>>>; 如果可能的类型对只有(T1,U1),(T2,U2),则可以按以下方式修改定义。 std::map<std::string, std::variant<std::pair<T1, U1>, std::pair<T2, U2>>>;
如何使用不同类型的ros2 msg制作topic_name(std::string)的std::map?
我面临一个问题,需要为 ros2 的 topic_name 和 msgs 制作一个 std::map,例如 // 这里的问题是,如何声明 std::map,即 ref_maps; 标准::地图 我面临一个问题,需要为 ros2 的 topic_name 和 msgs 制作一个 std::map,例如 // here is the question, how to declare the std::map, i.e. ref_maps; std::map<std::string, std::tuple<SomeUncertainType, AnotherUncertainType>> ref_maps; // one type msgType1 msg1_t; // = ...with some value assigned; msgType1::SharedPtr msg1_p; //-> ...with some value assigned, and notice, here is a SharedPtr std::string topic_name1 = "t1" // another type msgType2 msg2_t; msgType2::SharedPtr msg2_p; std::string topic_name1 = "t2" ref_maps[t1] = std::make_tuple(msg1_t, msg1_p); ref_maps[t2] = std::make_tuple(msg2_t, msg2_p); 这是否可能或任何其他方法可以实现类似的结果? 与某些基类不同的是 ros2 msgTypes( 和 ::SharedPtr) ,这样我就可以声明 ref_maps ,如下所示: std::map<std::string, std::tuple<MsgTypeBase, MsgTypePtrBase>> ref_maps; 如果需要使用一个类,该类的实例在任何给定时间都保存一种类型的值或其替代值(前提是它们已知),则标准解决方案是std::variant。 它本质上代表了一个类型安全的联合,它提供了一组成员和非成员函数,使一种类型和另一种类型之间的切换更简单。此外,值始终是静态分配的,避免了动态分配的内存和性能开销。 std::map<std::string, std::pair<std::variant<T1, T2>, std::variant<T1, T2>>>; 如果可能的类型对只有(T1,U1),(T2,U2),则可以按以下方式修改定义。 std::map<std::string, std::variant<std::pair<T1, U1>, std::pair<T2, U2>>>;
C++ 映射:如何获取用于将元素添加到 std::map 的密钥?
我正在使用包含例如的键创建一个 std::map兼作标识符。但是,我需要密钥有一些余地,即容差,以将密钥标识为“相同”。 我成功了
如何在不使用 auto 的情况下在 C++ 中循环遍历 unordered_map?
我试图循环遍历一个unordered_map,以查找它的任何值是否大于2。但是这种语法是错误的 unordered_map mp; 对于 (int i = 0; i < N; i++) { ...
我有一个std::map,其中键是一个指向具有priority()方法的类的指针,值只是一个int。映射有一个比较函数,可以通过优先级()来比较键,这是一个
find_if可以用来在std::map/std::unordered_map中查找键吗?
这是一个简单的程序,包括将一个元素添加到 std::unordered_map 中。但在添加之前,首先检查该密钥是否已经存在,如果存在则不要添加。 我的问题是...