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

问题描述

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

解决方案

似乎没有很好的解决方案,因为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);

解决方案二:
vector指针改成引用不行吗

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

时间: 2024-11-16 22:13:55

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

c++ stl map-c++中的map&amp;amp;lt;string, vector&amp;amp;lt;string&amp;amp;gt;&amp;amp;gt;使用swap清空

问题描述 c++中的map<string, vector<string>>使用swap清空 map> temp; 如何清空temp,我目前的做法是: temp.swap(map>()),但是总感觉temp中的value vector首先要清空,不知道是不是这样,若不清空,会有什么问题?请大侠指教!

STL之Map

概述 Map是标准关联式容器(associative container)之一,一个map是一个键值对序列,即(key ,value)对.它提供基于key的快速检索能力,在一个map中key值是唯一的.map提供双向迭代器,即有从前往后的(iterator),也有从后往前的(reverse_iterator). map要求能对key进行<操作,且保持按key值递增有序,因此map上的迭代器也是递增有序的.如果对于元素并不需要保持有序,可以使用hash_map. map中key值是唯一的,如果马匹

STL学习系列之一——标准模板库STL介绍

库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的分离,非面向对象本质.访问对象是通过象指针一样的迭代器实现的: 容器是象链表,矢量之类的数据结构,并按模板方式提供: 算法是函数模板,用于操作

map插入自定义对象总结_C 语言

难道插入map还有什么讲究吗?我们且看map在STL中的定义方法:template <class Key, class T, class Compare = less<Key>, class Alloc = alloc>第一个参数Key是关键字类型第二个参数T是值类型第三个参数Compare是比较函数(仿函数)第四个参数是内存配置对象 map内部存储机制实际是以红黑树为基础,红黑树在插入节点时,必须依照大小比对之后在一个合适的位置上执行插入动作.所以作为关键字,起码必须有"

Map小结

嵌套类摘要 static interface Map.Entry<K,V>           映射项(键-值对).   方法摘要  void clear()           从此映射中移除所有映射关系(可选操作).  boolean containsKey(Object key)           如果此映射包含指定键的映射关系,则返回 true.  boolean containsValue(Object value)           如果此映射将一个或多个键映射到指定值,则返回

Java集合框架 Map和泛型

Map集合 1.特点:该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 2.常用方法: 1.添加:v  put(k key , v value); 将数据以键值对的方式存进集合中. void putAll(Map<? extends k,? extends v> m) ;从指定映射中将所有映射关系复制到此映射中 2.删除:void clear();  清空集合 v remove(Object key); 将集合中的元素以键的形式移除. 3.判断:containsKey(Object k

spring学习笔记(3)Bean命名、定义与配置

基于xml的配置 基础配置 <bean id="id" name="name" class="full_name"> <property name="pname" value="pvalue" lazy-init="defalut/true/false" scope="singleton/prototype/request/session" />

Map.putAll方法——追加另一个Map对象到当前Map集合(转)

该方法用来追加另一个Map对象到当前Map集合对象,它会把另一个Map集合对象中的所有内容添加到当前Map集合对象. 语法  putAll(Map<? extends K,? extends V> m)  m:一个Map集合对象. 典型应用  本示例创建一个Map集合对象,为它添加一些内容并输出该集合的大小,然后创建第二个Map集合对象,也添加一些内容,输出集合大小,最后把第二个Map集合添加到第一个Map集合对象,再次输出第一个集合的大小.运行结果如图1.28所示.   public sta

C++中的STL类成员

问题描述 大家好,我在一个静态库中声明了一个类,该类中还有一个STL容器(例如vector,map),在别的项目中使用该静态库,只要使用该类,程序直接崩溃,不知道是什么原因,另外,我使用了两个静态库,如果只使用这个静态库,就不会出现问题,请问大虾,有人碰到这种问题么? 解决方案 解决方案二:静态库和你的程序都是一个版本的编译器么?