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())

 

转载于:https://www.cnblogs.com/thefirstfeeling/p/5872903.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值