c++ map 的key是结构体value 是int 怎么实现增、删查
在C++中,可以使用std::map来实现一个key为结构体,value为int的映射关系。下面是实现增、删、查的示例代码:
#include <iostream>
#include <map>
struct MyStruct {
int x;
int y;
// 添加其他成员变量和方法
};
// 重载小于运算符,用于结构体的比较
bool operator<(const MyStruct& lhs, const MyStruct& rhs) {
if (lhs.x < rhs.x)
return true;
else if (lhs.x == rhs.x && lhs.y < rhs.y)
return true;
return false;
}
int main() {
std::map<MyStruct, int> myMap;
// 添加元素
MyStruct key1{1, 2};
myMap[key1] = 10;
MyStruct key2{3, 4};
myMap[key2] = 20;
// 删除元素
myMap.erase(key1);
// 查找元素
auto it = myMap.find(key2);
if (it != myMap.end()) {
std::cout << "Value found: " << it->second << std::endl;
} else {
std::cout << "Value not found" << std::endl;
}
return 0;
}
在上述代码中,我们首先定义了一个结构体MyStruct,并重载了小于运算符<,以便在std::map中进行比较。然后,我们创建了一个std::map对象myMap,其中key为MyStruct类型,value为int类型。
接下来,我们可以使用myMap[key]的方式来增加或修改元素。例如,myMap[key1] = 10表示将key1和10关联起来。
使用myMap.erase(key)可以删除指定的key对应的元素。在示例代码中,我们删除了key1对应的元素。
使用myMap.find(key)可以查找指定的key对应的元素。如果找到了,返回一个指向该元素的迭代器;如果没有找到,返回myMap.end()。在示例代码中,我们查找了key2对应的元素,并输出其value值。
原文地址: http://www.cveoy.top/t/topic/i1Yy 著作权归作者所有。请勿转载和采集!