2 lgp8z lgp8z 于 2016.03.14 10:56 提问

c++,关于stl的应用,定义map

我想定义一个map容器,key是一个string,值是一个指向vector的指针,但是不同的string会对应不同类型的vector,这就不好定义了。求帮忙解决

3个回答

cxsmarkchan
cxsmarkchan   2016.03.14 11:29

似乎没有很好的解决方案,因为stl是泛型,类型参数不同,就相当于两个不同的类型,不能存储在一个容器中。
下面是一个勉强能用的方法,供你参考:
可以用map<string, void*>,然后再对void*强制类型转换,得到你想要的指针。前提是你已经知道每个string对应什么类型的指针,
类似于这样:

//定义
map<string, void> _map;
//使用,假设你的key是int,存的是vector<int>*型的变量
_map.put("int", new vector<int>();
((vector<int>*)_map.get("int"))->push_back(1);
cxsmarkchan
cxsmarkchan 回复lgp8z: 转型没什么,但一定要确定你转成了正确的类型。例如一个void*是指向vector<int>变量,那就必须用vector<int>*强制转换,如果你不小心写成了vector<double>*,就可能会出现一些危险的情况。
一年多之前 回复
lgp8z
lgp8z 你好 空指针跟vector指针的转型有没有什么地方需要注意?
一年多之前 回复
renwotao2009
renwotao2009   2016.03.14 13:32

vector指针改成引用不行吗

lgp8z
lgp8z 引用跟指针不是一回事吗
一年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2016.03.14 19:46

自己包装i一下map 然后通过模版来定义vector的类型 从map传递

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!