Accelerated C++ 学习笔记2

本文深入探讨了C++泛型算法的基本概念,解释了如何使用迭代器处理不同容器中的元素,同时介绍了增量运算符的优先级与结合特性。还详细阐述了迭代适配器的作用及常用应用,如back_inserter。此外,文章通过实例展示了find_if的使用方法,以及如何通过自定义谓词解决模板函数问题。最后,提供了判断字符串是否为回文的算法实现,并解释了如何利用迭代器和equal函数进行序列比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.泛型算法是一个不属于任何特定类别容器的算法,相反,它会从它的参数类型获得关于如何访问它所使用数据的提示。

标准库的泛型算法通常在它们的参数间采用迭代器来处理基本容器的元素。

2.增量运算符的优先级与*相同,而且它们都是右结合的,故*out++也就是
*(out++);

3.迭代适配器是一种函数,它会产生与其参数相关的属性的迭代器以做他用。
迭代适配器是在<iterator>中定义的。
 
最常用的的有back_inserter,它用一个容器作为它的参数并产生一个迭代器,在生成的迭代器被用作一个目的地的时候,它会向容器末端添加数值。
 
4.find_if的使用

5.当传递一个重载函数给一个模板函数时,因为我们没有提供让编译器用来选择哪个版本的任何参数,这个时候就要我们编写自己版本的谓词来解释我们使用的哪个版本的函数。
 
6.string::substr是对索引进行操作的,而对向量进行复制的时候,可以采用
string(i,j),创建了一个字符串,是在区间[i,j)中的字符的一个复制。

7.判断一个字符是否是回文
bool  is_palindrome(const string &s){
  return equal(s.begin(),s.end(),s.rbegin());
}
在上面中,rbegin也是一个迭代器,但这个迭代器会从容器的最后一个元素开始,并且从后向前地访问容器

equal函数比较了两个序列以判断它们是否包含有相等的值。  

8.search 函数有两对迭代器参数:第一对指示了我们要查找的序列,第二对则指示了一个序列——我们希望为这个序列定位。如果search失败,那么它将返回第二个迭代器,如果找到了我们的目标序列,那么它返回的就目标序列的第一个字符所在位置的迭代器

9.如果一个容器支持索引,那么它的迭代器也会支持
beg是string::const_iterator类型的,那么beg[-1]就是位置紧位于由beg所指示的字符之前的那一个字符,我们可以把beg[-1]看成是*(beg-1)的简写

同样i和bge是一个类型的,那么i[sep.size()]是*(i+sep.size())的简写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值