essential c++ 随笔
编写一个C++程序:
vector初始化两种方法:
vector<int>elem_seq(seq_size);
elem_seq[0]=1
elem_seq[1]=2;
另一种方法则是利用一个已初始化的array作为vector的初值
int elem_vals[seq_size]={元素}
vector<int>elem_seq(elem_vals,elem_vals+seq_size};
vector<int > m_vtmp;
m_vtmp.assign(arr,arr+5);
rand()和srand()都是标准程序库提供的所谓伪随机数产生器.srand()的参数是所谓随机数产生器种子(seed)。要知道,每次调用rand(),都回返回一个介于0和“int 所能表示的最大整数”间的一个整数,现在,将随机数产生器的种子(seed)设为5,我们就可以将rand()的返回值限制在0和5之间这两个函数的声明式位于cstdlib头文件中
欲对文件进行读写操作,首先得含入fstream头文件
#include<fstream>
为了开启一个可供输出的文件,我们顶一个一个ofstream(供输出用的file stream)对象,并将文件名传入:
ofstream outfile("seq_data.txt")如果指定文件不存在,便会有一个文件被产生出来并开启作为输出只用,如果存在,这个文件被开启作为输出之用,而文件原来的数据会被丢弃.
如果不想丢弃数据,提供第二个参数ofstream outfile("seq_data.txt",ios_base::app);
if(!outfile)检验是否开启成功,cerr代表标准错误输出设备,cerr的输出结果没有缓冲,他会立即显示到用户终端机
else outfile<<"";
同理可供读取的文件,我们可顶一个一个ifstream(input file stream)对象,并将文件名传入,如果文件未能开启成功
if(!infile)
else while(infile>>name)
如果想同时读写一个文件,我们定义一个fstream对象,为了以追加模式开启,我们传入第二参数值
fstream iofile("seq_data.txt",ios_base::in|ios_base::app);
面向过程的编程风格
可以这样,更高的可见度void display(const vector<int>&,ostream&=cout);
void display(const vector<int>&vec,ostream &os)
{}
至于函数定义处,并没有指定参数的默认值
将函数指定为inline,体积小,常被调用,所从事的计算并不复杂
inline函数的定义常常被置于头文件中,由于编译器必须在它被调用的时候加以展开,所以这个时候起定义必须有效地
template<typename elemType>
function template 同时也可以是重载函数.
关键字enum之后是一个可有可无的识别名称,定义处枚举类型,大括号里头是以逗号为区隔的列表,表中每个项目成为枚举成员
默认情况下,第一个枚举成员的值为0,接下来的每个枚举成员都比前面一个多1
const object就和inline函数一样,是“一次定义规则”下的例外,const object的定义只要一出文件之外便不可见,这意味着我们可以在多个程序代码文件中加以定义,不会导致任何错误,
::表示此iterator乃是位于string vector定义式内的嵌套型别
使用序列式容器
序列式容器用来维护一组排列有序,型别相同的元素,其中有第一,第二,。。。。以此类推,乃至最后一个元素
vector和list是两个最主要的序列式容器,deque(双向队列)
所有容器类的共同操作
1,equality(==)和(inequality)(!=)运算符,返回true或false
2,assignment(=)运算符,将某个容器复制给另一个容器
3,empty()会在容器无任何元素时返回true,否则返回false
4,size()传用容器内当前含有的元素数目
5,clear()清除所有元素
list不支持偏移算法
使用泛型算法
1,find
2,binary_search maxelement,copy
3,count
4,search
find_if
function objects
#include<functional>
sort(vec.begin(),vec.end(),greater<int>());
binary_search(vec.begin(),vec.end,elem,greater<int>());
另外数种稍加变化的方式显示Fibonacci数列,每个元素自身相加,和自身相乘,被加到对应的pell数列。。。。等等,做法之一是使用泛型算法transform()并搭配plus<int>和multiplies<int>
adapter(配接器)
标准程序库提供两个binder adapter(绑定配接器);bind1st会将指定值绑定至第一操作数,bind2nd则将指定值绑定之第二操作数。
(关于bind2nd的介绍http://blog.csdn.net/simahao/article/details/405455)
另一种adaptor是所谓的negator,它会逆转function object的真伪值,not1可逆转unary function object的真伪值,not2可逆转binary
function object的真伪值,
find_if的用法http://blog.csdn.net/hj490134273/article/details/6051080
欲查询map内是否存在某个key,有三种方法
1.最直观的做法就是吧key当索引使用
缺点是,如果我们用来索引的那个key并不存在map内,则呢个key会自动被加入map,而其value将是0
2.map查询法是利用map的find()函数,如果key已置于其中,find()会返回一个iterator,指向keyvalue形成一个pair,反之则返回end()
3.map查询发是利用map的count()函数,count()会返回某特定项目在map内的个数:
3.8使用set
set<string>
对于任何key值,set只能存储一份,如果要存储多份相同的key值,必须使用multiset
默认情况下,set元素,依据其所属型别的less-than,运算符进行排列
set<int>iset(vec.begin(),vec.end())
essential c++ 随笔的更多相关文章
- Essential C#读书笔记
Essential C#读书笔记 这是一个多变的时代,一次又一次的浪潮将不同的人推上了巅峰.新的人想搭上这一波,同时老的人也不想死在沙滩上.这些年新的浪潮又一次推开,历史不停地重复上演,那便是移动互联 ...
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 【置顶】CoreCLR系列随笔
CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...
- C++随笔:.NET CoreCLR之GC探索(4)
今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...
- C++随笔:从Hello World 探秘CoreCLR的内部(1)
紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
- 使用Beautiful Soup编写一个爬虫 系列随笔汇总
这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...
- 利用Python进行数据分析 基础系列随笔汇总
一共 15 篇随笔,主要是为了记录数据分析过程中的一些小 demo,分享给其他需要的网友,更为了方便以后自己查看,15 篇随笔,每篇内容基本都是以一句说明加一段代码的方式, 保持简单小巧,看起来也清晰 ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
<高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
随机推荐
- _T(x) _TEXT(x) L 代表什么?
首先 <tchar.h>中 #ifdef _UNICODE .... #define __T(x) L ## x //替换 #else /* ndef _UNICODE ...
- 基于Vmware player的Windows 10 IoT core + RaspberryPi2安装部署
本文记录了基于Vmware Player安装Windows10和VS2015开发平台的过程,以及如何在RaspberryPi2.0上启动Windows10 IoT core系统,并通过一个简单的hel ...
- Integer比较浅析
//Integer 型比较假如是使用 == ,只能比较数值为-128~127数值; 在这个范围内使用的是自动装箱拆箱: //.intValue()使用这个需要确认属性不为null; //equals( ...
- chrom浏览器-F2使用方法一
由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首先介绍Chrome开发者工具中,调试时使用最多 ...
- Javascript根据指定下标或对象删除数组元素
删除数组元素在工作中经常会用到,本文讲解一下Javascript根据下标删除数组元素的方法,需要了解的朋友可以参考下 将一下代码放在全局js文件中: Js代码 /** *删除数组指定下标或指定对象 * ...
- C04 模块化开发
目录 模块化开发概述 函数概述 如何使用函数 字符串处理函数 模块化开发特点 模块化开发概述 概述 C语言是面向过程的语言,意味着编写C语言程序的时候,我们要像计算机一样思考如何设计程序. 模块化开发 ...
- 打印两个有序链表的公共部分 【题目】 给定两个有序链表的头指针head1和head2,打印两个 链表的公共部分
简单题 package my_basic.class_3; public class Code_10_PrintCommonPart { public static class Node{ int v ...
- Bootstrap 响应式表格
响应式表格 通过把任意的 .table 包在 .table-responsive class 内,您可以让表格水平滚动以适应小型设备(小于 768px).当在大于 768px 宽的大型设备上查看时,您 ...
- shell脚本,提取ip地址和子网掩码,和查外网ip地址信息。
#提取IP地址和子网掩码 [root@localhost ~]# ifconfig eth0|grep 'inet addr'|awk -F'[ :]+' '{print $4"/& ...
- python中with用法及原理
资源的管理在程序的设计上是一个很常见的问题,例如管理档案,开启的网络socket与各种锁定(locks)等.最主要的问题在于我们必须确保这些开启的资源在使用之后能够关闭(或释放),若忘记关闭这些资源, ...