2011-05-04 111 views
-1

我在Visual C++应用程序这是什么意思在C++

遇到这个
extern map<string, rpcfn_type> mapCallTable; 

map<string, string> 

是什么意思?没有地图的事情,但

<string, string> 

部分

+0

那么很难看到这些部分分开。请参阅http://www.cplusplus.com/reference/stl/map/或者更好的http://www.uow.edu.au/~nabg/ABC/ABC.html – sehe 2011-05-04 20:27:43

+0

它们是模板参数,它的映射字符串转换为字符串或字符串转换为第一个示例中的rpcfn_type – forsvarir 2011-05-04 20:27:58

+0

在编写任何更多的Visual C++应用程序之前,您可能需要[阅读一本好书](http://stackoverflow.com/questions/388242/the -definitive-C-书指南和列表)。 – 2011-05-04 20:30:57

回答

10

这些都是模板参数; map是一个类模板,只有在告诉它将使用的类型之后它才会完成。第一种是键的类型,第二种是将通过键存储的数据的类型。

+0

+1只有几句话才能说明问题:) – ralphtheninja 2011-05-04 20:30:03

0

您不能单独使用<string, string>零件,因为它是map的修饰符。

map是模板类型,并且<string, string>引用它使用的类型。 map<string, string>表示map,其关键类型为string,其值类型也为string

1

std::map是一个模板。您可以使用它创建一个具有密钥和与该密钥相关的一些数据的类型。尖括号是指定这两种类型的位置,所以(例如),map<string, string>定义了一种类型,它使用一个字符串作为关键字,并且具有与第一个字符串关联的另一个字符串。

一个这也许更容易理解会是这样的:

struct person {   
    string name; 
    string email_address; 
    phone_number home; 
    phone_number mobile; 
}; 

map<string, person> people; 

这让我(例如)使用昵称为重点,以查找姓名,电子邮件地址,电话号码等的人。