49 学会分析与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算法,但是错误信息来看,编译器好像对此一无所知,那么可能是你没有包含相应的头文件。

猜你喜欢

转载自blog.csdn.net/weixin_28712713/article/details/80936322
49