【C++ Primer 第10章】再探迭代器】的更多相关文章

10.4.1 插入迭代器 插入迭代器接受一个容器,生成一个迭代器,通过向该迭代器赋值可以实现向容器添加元素 (1)back_inserter: 接受一个参数, 示例: auto iter = back_inserter(iVec): iter = value: (2)front_inserter: 接受一个参数, 示例: auto iter = front_inserter(iVec): iter = value: (3)inserter: 接受两个参数,示例:auto iter = inser…
插入迭代器 1. 测试代码: #include<iostream> #include<vector> #include<list> #include<iterator> #include<algorithm> using namespace std; void display(list<int> li) { for (auto c : li) cout << c << " "; cout &…
概述 泛型算法: 称它们为"算法", 是因为它们实现了一些经典算法的公共接口, 如搜索和排序; 称它们是"泛型的", 是因为它们可以用于不同类型的元素和多种容器类型, 不仅包括标准库类型, 还包括内置的数组类型. 大多数算法都定义在algorithm中, 标准库还在头文件numeric中定义了一组数值泛型算法. 一般情况下, 这些算法并不直接操作容器, 而是遍历有两个迭代器指定的一个元素范围来进行操作. 泛型算法本身不会执行容器的操作, 它们只会运行与迭代器之上,…
反向迭代器 • 反向迭代器就是在容器中从尾元素向首元素反向移动的迭代器.对于反向迭代器,递增(以及递减)操作的含义会颠倒过来. • 递增一个反向迭代器(++it)会移动到前一个元素:递减一迭代器(--it)会移动到下一个元素. • 除了forward_list之外,其他容器都支持反向迭代器.我们可以通过调用rbegin.rcend.crbegin和crend成员函数来获得反向迭代器.这些成员函数返回指向容器尾元素和首元素之前一个位置的迭代器.与普通迭代器一样,反向迭代器也有const和非cons…
除了为每个容器定义的迭代器之外,标准库在头文件<iterator>还定义了额外集中迭代器, 包括: 插入迭代器,这些迭代器被绑定到一个容器上,可以向容器插入元素. 流迭代器,    这些迭代器被绑定到输入或输出流上,可以遍历所关联的IO流 反向迭代器,这些迭代器向后而不是向前移动,除了forward_list之外的标准库容器都有反向迭代器. 移动迭代器,这些专用得对得起不是拷贝而是移动其中的元素. 插入迭代器 插入迭代器操作: it = t 在it指定的位置插入值t *it, ++it, --…
iostream迭代器 标准库为iostream定义了可用于这些IO类型对象的迭代器. istream_iterator读取输入流, ostream_iterator向一个输出流写数据.   1. istream_iterator操作 当创建一个流迭代器时,必须指定迭代器将要读写的对象类型.一个istream_iterator使用 >> 来读取流.因此,istream_iterator要读取的类型必须定义了 >> 运算符.   创建一个istream_iterator时,我们可以将…
目录 •  iostream迭代器 •  反向迭代器 插入迭代器 插入迭代器,这些迭代器被绑定到一个容器上,可以向容器插入元素. 头文件为:#include<iterator it=t 在it指定的当前位置插入值t.假定c是it绑定的容器,依赖于插入迭代器的不同种类,此赋值分别调用c.push_back(t).c.push_front(t)或c.insert(t,p),其中p为传递给inserter的迭代器位置 *it,++it,it++ 这些操作虽然存在,但不会对it做任何事情.每个操作都返回…
泛型算法 find(vec.beign(), vec.end(), val) //返回指向第一个给定值的元素的迭代器 count(vec.bengin(), vec.end(), val) //返回给定值在序列出现的次数 accumlate(vec.bengin(), vec.end(), ) //求和 equal(roster1.cbegnin(), roster1.end(), roster2.begin()) //用于确定两个序列是否保存了相同的值 fill(vec.being(), ve…
标准库未给容器添加大量功能,而是提供一组独立于容器的泛型算法 算法:它们实现了一些经典算法的公共接口 泛型:它们可用于不同类型的容器和不同类型的元素 利用这些算法可实现容器基本操作很难做到的事,例如查找/替换/删除特定值.重排顺序等 10.1 概述 大多数算法定义在algorithm头文件中,另外一组数值算法定义在numeric头文件中 标准库算法不直接操作容器,而是遍历两个迭代器指定的元素范围 指针就像内置数组上的迭代器,故泛型算法也可操作内置数组和指针 find算法: 作用:将范围中每一个元…
在牛客网上看到一题字符串拷贝相关的题目,深入挖掘了下才发现原来C++中string的实现还是有好几种优化方法的. 原始题目是这样的: 关于代码输出正确的结果是()(Linux g++ 环境下编译运行) int main(int argc, char *argv[]) { string a="hello world"; string b=a; if (a.c_str()==b.c_str()) { cout<<"true"<<endl; } e…