49 学会分析与STL有关的编译器诊断信息

本文详细介绍了STL中的模板使用方式,如string的基本结构basic_string,map的内部实现_Tree或_rb_tree。同时,文章深入探讨了在const成员函数中数据成员的自动转换规则,以及vector和string迭代器的特性。此外,还列举了常见错误及其诊断信息,帮助读者更好地理解和使用STL组件。
STL内部使用的模板:string为basic_string、map为_Tree或者_rb_tree

在一个呗声明为const的成员函数内部,该类的所有非静态数据成员自动被转化变成相应的const类型。

  • vector和string的迭代器通常是指针,所以错误地使用iterator时,编译器信息中可能会引用到指针类型。
  • 如果诊断信息提到了back_insert_iterator、front_insert_iterator或者insert_iterator。则几乎总意味着你错误的调用了back_inserter、front_inserter或者inserter。
  • 类似的,如果诊断信息中提到了binder1st或者binder2nd,那么你可能错误的使用了bind1st和bind2nd。
  • 输出迭代器(ostream_iterator、ostreambuf_iterator,以及那些由back_inserter、front_inserter或者inserter函数返回的迭代器)在赋值操作符内部完成其输出或者插入工作,所以,如果在使用这些迭代器的时候犯了错误,那么你所看到的错误消息中可能会提到与赋值操作符有关的内容。
  • 如果你得到的错误消息来源于某一个STL算法的内部实现,那么也许你在调用算法的时候使用了错误类型。
  • 如果你正在使用一个很常见的STL组件,比如vector、string、或者for_each算法,但是错误信息来看,编译器好像对此一无所知,那么可能是你没有包含相应的头文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值