map的value值可以放类指针吗
时间: 2023-08-01 13:12:38 浏览: 195
基于C++ map中key使用指针问题的详解
5星 · 资源好评率100%
是的,`std::map` 的 `value` 类型可以存储类指针。在 `std::map` 中,键(`key`)和值(`value`)都可以是任何类型,只要它们满足一些要求:
- 键(`key`)类型必须支持小于(`<`)运算符,以便在内部实现中进行排序和查找。
- 值(`value`)类型必须是可复制的(`Copyable`),以便在内部实现中进行复制和赋值。
因此,如果您的类指针满足这些要求,那么它可以用作 `std::map` 的值类型。下面是一个示例,其中 `std::map` 的值类型是指向 `MyClass` 类的指针:
```c++
#include <map>
class MyClass {
public:
int value;
};
int main() {
std::map<int, MyClass*> myMap;
MyClass* obj1 = new MyClass();
obj1->value = 1;
MyClass* obj2 = new MyClass();
obj2->value = 2;
myMap[1] = obj1;
myMap[2] = obj2;
// 访问 map 中的值
std::cout << myMap[1]->value << std::endl; // 输出 1
std::cout << myMap[2]->value << std::endl; // 输出 2
// 记得释放内存
delete obj1;
delete obj2;
return 0;
}
```
请注意,在释放 `std::map` 中指向类对象的指针之前,必须确保不再使用该指针。
阅读全文