std::map与字符串或结构键
std::map with string or struct key
如何在 C++ 中内存结构或字符串类型的键值的 std:map 映射?这可能吗?现在我正在使用带有键值 int 的映射进行内存映射,但由于 int 的最大范围有限,并且我的程序中键值的最大大小约为 10^24,所以我卡住了。那么通过使用键类型作为结构或字符串,我可以解决这个问题吗?
int p0, p1, p2;
map<int,int> p0obj, p1obj, p2obj, size_p; int count = 0;
float d0, d1, d2;
float a0 = a[p0];
float b0 = b[p0];
float a1 = a[p1];
float b1 = b[p1];
float a2 = a[p2];
float b2 = b[p2];
if(d0>0 && d1>0 && d2>0) {
int key = d0+max_d*(d1+max_d*(d2+max_d*(a0+max_c*(b0+max_c*(a1+max_c*(b1+max_c*(a2+max_c*b2)))))));
//std::string key = std::to_string(k);
p0obj[key] = p0; p1obj[key] = p1; p2obj[key] = p2; size_p[key]++;
oa << p0obj; oa << p1obj; oa << p2obj; oa << size_p;
std::cout<<"key="<<key<<std::endl;
}
}
}
似乎您想使用一堆float
作为地图中的键。
您可以通过将它们包装为tuple
或定义更有意义的struct
类型来执行此操作:
#include <map>
struct MyKey {
float d0, d1, d2, a0, b0, a1, b1, a2, b2;
bool operator < (const MyKey& o) const {
return std::tie(d0, d1, d2, a0, b0, a1, b1, a2, b2) < std::tie(o.d0, o.d1, o.d2, o.a0, o.b0, o.a1, o.b1, o.a2, o.b2);
}
};
struct MyValue {
float p0, p1, p2;
};
std::map<MyKey, MyValue> pobj;
要插入到此地图中:
pobj.insert({{d0, d1, d2, a0, b0, a1, b1, a2, b2}, {p0, p1, p2}});
但是不确定你会用这样的地图做什么。按浮标搜索可能不会很好地工作。但是查找一个子空间,例如 lower_bound
可能仍然有用。
auto it = pobj.lower_bound({d0, d1, d2, a0, b0, a1, b1, a2, b2});
if (it != end(pobj)) {
const MyKey& key = it->first;
const MyValue& value = it->second;
std::cout << "found: " << value.p0 << " " << value.p1 << " " << value.p2 << std::endl;
}
相关文章:
- 使用带有结构数组的 Eigen::Map
- 将指向结构数组的指针添加到 std::map
- C++类似于 std::map 的数据结构,具有多个键级别
- 键:: MAP或类似数据结构中的键压缩
- 使用std :: map时,包含unique_ptr的结构中的默认破坏者会导致编译错误
- 在 std::map 中使用结构作为值时出现运行时错误
- 带有 std::map 的 c++ 结构是拥有动态数据对象的好设计吗?
- 如何在STD :: MAP中找到具有至少一个数据成员等于密钥的结构的元素
- C 设置STD :: MAP值为结构实例的指针
- 指向结构的指针保留某些属性,同时将其他属性重置为零(使用 map)
- STD :: MAP的基础结构是什么
- std::map与字符串或结构键
- 在分配的结构中初始化 std::map 在 Windows 上失败
- 如何初始化结构字段 std::map<std::string, std::string>称为参数
- 如何实现 std::map::查找包含两个结构'Pos'结构的比较逻辑,每个结构包含 x 和 y 坐标
- Python 数据结构:map<string、vector<int>>
- “无效的操作数是二进制表达式”当使用自定义结构作为C 中的MAP索引时
- 带有结构键的 std::map 的高效比较器
- 如何在结构中声明时在 Map 中插入值
- C++使用结构作为<map,<map,vector的数据>>