typedef map<string,student>STUDENT_BOOK;

typedefmap<string,student>STUDENT_BOOK;//定义学生名册类型typedefmap<string,student>::iterator... typedef map<string,student>STUDENT_BOOK; //定义学生名册类型
typedef map<string,student>::iterator STU-ITER; //定义学生名册迭代器类型
typedef map<string,student>::const_iterator CONST_STU_ITER; //定义学生名册常量迭代器类型
麻烦解释一下个语句的意思

typedef key key_type 解释为key类型可以用key——type来同等表示
请问上面三面三句中都是是什么意思
展开
 我来答
百度网友672cf6179
推荐于2016-10-21 · TA获得超过141个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:114万
展开全部
map是标准模板库(STL)中的一个模板类,它有两个模板参数,一是关键字类型,另一个是值类型。如map<string,student>表示该map的关键字为string类型,值为student类型。
map<string,student>::iterator是相应的map的迭代器类型,用该迭代器可以遍历整个map。而map<string,student>::const_iterator为相应map的常迭代器类型,用该迭代器来遍历const map。
为什么分const和非const呢?为了方便理解,可以把迭代器理解有指针。拿指针为例:
对于int a = 8,可以这样int *pInt = &a写
但是对于const int a = 8;就不能那样写了,必须这样const int *pInt=&a。
使用迭代器访问map:
:map<string, student> szStMap;
... // 加入元素
for(map<string, student>::iterator it = szStMap.begin(); it != szStMap.end(); ++it)
{
// 对it进行操作,it表示该元素的迭代器,可以通过*it来访问该元素
}

从上面的例子可以看出,这种模板类的实现名字特别长,如map<string, student>,为了书写方便并使类型能够见名思意,所以使用typedef为其取一个较短的、见名思意的别名,如typedef map<string,student>STUDENT_BOOK。这样在程序中便可使用这个较短的、见名思意的别名,如上面的示例代码可以写成:
typedef map<string,student>STUDENT_BOOK;
typedef STUDENT_BOOK::iterator StBkIt;
STUDENT_BOOK stBk;
... // 加入元素
for(StBkIt it = stBk.begin(); it != stBk.end(); ++it)
{
// 对it进行操作,it表示该元素的迭代器,可以通过*it来访问该元素
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式