C++程序设计:原理与实践读书笔记(第四章)

        程序员的任务就是将计算表达出来,并且做到:

  • 正确
  • 简单
  • 高效

        目前的手段主要是把一个大的计算任务划分为许多小任务。这一技术主要包括两类方法:

  • 抽象:即不需要了解的程序具体实现细节被隐藏在相应的接口之后。
  • 分治:即把一个大问题分为几个小问题分别解决。

        除了个别情况(例如0和1),程序中应该尽量少用字面常量,而是尽可能地使用符号常量。在代码中,这种不能被直接识别的字面常量通常被戏称为魔术常量。

        C++98不支持constexpr,大家用const替代。

        需要注意的是,表达式a<b<c表示(a<b)<c,即true<c或者false<c。

        增量表达式至少有三种形式:

++a
a+=1
a=a+1

        哪种方式比较好?建议使用第一种方式,它直观地表示了增量的含义。

        记号type(value)和type{value}表示“将value转换为type类型,就像用值value来初始化type类型的变量一样”。使用type{value}可以避免窄化转换,而type(value)不能。

double d=2.5;
int i=2;

double d2=d/i;    //d2==1.25
int i2=d/i;       //i2==1
int i3{d/i};      //错误:double→int可能是窄化转换

d2=d/i;            //d2==1.25
i2=d/i;            //i2==1

        vector是一组可以通过索引来访问的顺序存储的数据元素。其中,第一个数据元素是索引号0,第二个是1,以此类推。我们可以用vector名和索引号的组合来表示一个具体的数据元素。vector可以用如下形式表示:

vector<int> v = {5,7,9,4,6,8};

        定义一个vector需要确定vector的数据类型和始集。数据类型在紧跟vector名的<>内定义(如<int>)。下面是另一个示例: 

vector<string> philosopher = {"Kant", "Plato", "Hume", "Kierkegaard"};

        一个vector只能存储与其数据类型相同的数据。当给定大小的vector被定义后(未被指定数据元素的值),根据数据类型的不同,将被赋予不同的缺省值。

        遍历一个vector:

vector<int> v = {5, 7, 9, 4, 6, 8};
for(int i=0;i<v.size();++i)
    cout << v[i] << '\n';

for(int x:v)
    cout << x << '\n';

        使用push_back(),将一个新的元素添加到vector中,该元素成为vector的最后一个元素:

vector<double> v;    //初始状态vector中没有元素
v.push_back(2.7);    //现在v[0]==2.7
v.push_back(5.6);    //现在v包含两个元素:v[1]==5.6
v.push_back(7.9);    //现在v中包含三个元素:v[2]==7.9

        vector的大小可以通过调用成员函数size()获得。初始时v.size()的值是0,三次调用push_back()后,v.size()的值变为3.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值