C++学习笔记43:STL
- 提供了一种顺序访问容器中每个元素的方法
- 可以使用++运算符来获得指向下一个元素的迭代器
- 可以使用*运算符访问迭代器所指向的元素,如果元素类型是类或者结构体,可以使用->运算符直接访问该元素的一个成员;
- 有些迭代器还支持--运算符获得指向上一个元素的迭代器
- 迭代器是泛化的指针,指针也具有同样的特性,因此指针本身就是一种迭代器
- 使用独立于STL的迭代器,需要包含头文件<iterator>
STL的基本组件---函数对象(function object)
- 一个行为类似函数的对象,对它可像调用函数一样调用
- 函数对象是泛化的函数:任何普通的函数和任何重载了“()”运算符的类的对象都可以作为函数对象使用
- 使用STL的函数对象,需要包含头文件<functional>
STL的基本组件---算法(algorithm)
- 可以广泛用于不同对象和内置的数据类型
- STL包括70多个算法(排序,消除算法,计数算法,比较算法,变换算法,置换算法,容器管理等)
- 使用STL的算法,需要包含头文件<algorithm>
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <functional> using namespace std; int main()
{
const int N = ;
vector<int> s(N);//容器
for (int i = ; i < N; i++)
{
cin >> s[i];
} /*
算法:取相反数后输出;ostream_iterator<int>(cout, " "):输出流迭代器
negate<int>() 取相反数的函数;
transform算法的一种实现:
transform算法顺序遍历first和last两个迭代器所指向的元素;
将每个元素的值作为函数对象op的参数;
将op的返回值通过迭代器result顺序输出;
遍历完成后result迭代器指向的是输出的最后一个元素的下一个位置,transform会将该迭代器返回;
template <class InputIterator, class OutputIterator, class UnaryFunction>
OutputIterator transform(InputIterator first, InputIterator last, OutputItertor result,UnaryFunction op)
{
for(;first!=last;++first,++result)
*result = op(*first);
return result;
}
*/
transform(s.begin(), s.end(), ostream_iterator<int>(cout, " "), negate<int>());
cout << endl;
return ;
}
C++学习笔记43:STL的更多相关文章
- CUBRID学习笔记 43 insert into
cubrid的中sql查询语法insert into ------ 官方文档是英文的,看不明白可以参看ocracle的同类函数说明.很多都是一样的. INSERT INTO a_tbl1(id) VA ...
- [原创]java WEB学习笔记43:jstl 介绍,core库详解:表达式操作,流程控制,迭代操作,url操作
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 学习笔记:STL
第一部分:(参考百度百科) 一.STL简介 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Me ...
- Linux下汇编语言学习笔记43 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Java学习笔记43(Spring的jdbc模板)
在之前的学习中,我们执行sql语句,需要频繁的开流,关流比较麻烦,为了更加的简化代码,我们使用Spring 的jdbc模板jdbcTemplate来简化我们的代码量:需要导入的包有: 我们在之前的dr ...
- C++ 学习笔记之 STL 队列
一. 引言 在算法以及数据结构的实现中,很多地方我们都需要队列(遵循FIFO,先进先出原则). 为了使用队列,我们可以自己用数组来实现队列,但自己写太麻烦不说,并且还很容易出错. 好在C++的STL ...
- android学习笔记43——图形图像处理3——Path
Path类 Path类可以预先在View上将N个点连成一条“路径”,然后调用Canavas的drawPath(path,paint)即可沿着路径绘制图形. android还为路径绘制提供了PathEf ...
- 学习笔记-C++ STL iterator与对指针的理解-20170618
vector的itrerator支持random access #include<iostream> #include<vector> using namespace std; ...
- Kali学习笔记43:SQL盲注
前面的文章都是基于目标会返回错误信息的情况进行判断是否存在SQL注入 我们可以轻易根据数据库报错信息来猜测SQL语句和注入方式 如果程序员做得比较好,不显示错误信息,这种情况下得SQL注入称为SQL盲 ...
随机推荐
- Project Euler Problem9
Special Pythagorean triplet Problem 9 A Pythagorean triplet is a set of three natural numbers, a b ...
- 005_nginx414_nginx 414 Request-URI Too Large
一.开发请求一个非常长的请求参数 https://jiaju.jyall.me/backend/dish/getSales/?dishId=167271&dishId=166975&d ...
- kerberos介绍
重要术语 1. KDC 全称:key distributed center 作用:整个安全认证过程的票据生成管理服务,其中包含两个服务,AS和TGS 2. AS 全称:authentication s ...
- PYTHON-基本数据类型-数字类型,字符串类型,列表类型-练习
# 字符串练习# 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)# name = " aleX"# # 1) 移除 name 变量对应的值两边的空格,并输 ...
- STM32F412应用开发笔记之七:片上ADC的应用测试
在我们的应用项目中需要采集一些模拟量,这些量使用MCU自带的ADC就可以满足要求.在NUCLEO-F412ZG实验板上的STM32F412ZG有一个16通道的ADC,我们试验用它采集几个数据. 在NU ...
- 详解用webpack的CommonsChunkPlugin提取公共代码的3种方式(注意webpack4.0版本已不存在)
Webpack 的 CommonsChunkPlugin 插件,负责将多次被使用的 JS 模块打包在一起. CommonsChunkPlugin 能解决的问题 在使用插件前,考虑几个问题: 对哪些 c ...
- Nginx 下Thinkphp5伪静态
server { listen 80; server_name all.bjed.com; root "F:\www\asdata"; location / { index ind ...
- mace
作者:十岁的小男孩 QQ:929994365 心之安处即是吾乡. 本文主要的方向是终端移植.其主要又分两个小方向,理论和实践,即模型优化和模型移植.下文为前期写的,较为潦草,现在基本框架思路已经搭起来 ...
- 基于bootstrap的基本模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- Nginx 响应状态
ngx.status = ngx.HTTP_CONTINUE (100) (first added in the v0.9.20 release)ngx.status = ngx.HTTP_SWITC ...