c++,map的key与value类型

如下代码,map的值定义为类,为什么使用指针employee*

class employee;
map<int, employee*> personnel;

 

你可可以不使用指针啊。

如果你的变量是employee *p;你想把p放入map,那么你就要用指针

如果你的变量是employee q,那么你放入map就不能用指针了。也就是说和你的map用来存放变量的类型有关。

class A{};
	
map<int, A> ttt;
map<int, A*> sss;
A a1;
A *a2=new A;
ttt[1] = a1;
sss[1] = a2;

 

当然可以直接存类,但是存指针方便修改,而且占用空间也不大,建议使用指针

指针只有四个字节,读取的时候就不需要进行深拷贝了,速度快。

class employee;
map<int, employee*> personnel;

==如果你的实际代码就是这样子,那么class employee只是一个类申明,map就只能用指针类型,不能用对象类型;否则编译会报错的

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html