C++系列笔记(一)

简介: C++系列笔记(一)

     【导读】《21天学通C++》这本书通过大量精小短悍的程序详细而全面的阐述了C++的基本概念和技术,包括管理输入/输出、循环和数组、面向对象编程、模板、使用标准模板库以及创建C++应用程序等。这些内容被组织成结构合理、联系紧密的章节,每章都可在1小时内阅读完毕;每章都提供了示例程序清单,并辅以示例输出和代码分析,以阐述该章介绍的主题。 本文是系列笔记的第一篇,欢迎各位阅读!    

第一章(上)

1、在C++中,可不显示地指定变量类型,使用关键字auto例如:auto flag=true。这里将指定变量flag的类型交给了编译器,编译器会自动确定变量应为什么类型。PS:auto时必须将变量初始化,否则会出现编译错误。2、使用enum来定义变量只有一组特定的取值 例如:

enumRainbowColors{ 
violet=0,
Indigo,
Blue,
Green,
Yellow,
Orange,
Red};

RainbowColors MyWorldsColor = blue ; #声明了常量MyWorldColor,这个常量只能取RainbowColors的值,声明枚举常量时,编译器把枚举值(voilet等)转化为整数,每个枚举值都比前一个大1.可以自己指定初始值,没有指定的话初始值为0.3、为减少内存的占用,可以用std::vector来定义动态数组。需要包含头文件#include例如:简要代码如下

#include<iostream>#include<vector>usingnamespacestd;
intmain()
{
vector<int>DynArrNums(3)  #数组初始长度为3intAnotherNum=0;
cin>>AnotherNum;
DynArrNums.push_back(AnotherNum)  #使用这个函数将这个数字压入到矢量中}

4、C++字符串的使用需要使用头文件#include才能使用string 变量名定义字符串变量。例如:

#include<iostream>#include<string>usingnamespacestd;
intmain()
{
stringGreetings("Hello,std:string!");
cout<<Greetings<<endl;
cout<<"enter a line o text:"<<endl;
stringFirstLine;
getline(cin, FirstLine);
cout<<"enter another"<<endl;
stringSecLine;
getline(cin, SecLine);
cout<<"concatenation:"<<endl;
stringContact=FirstLine+" "+SecLine;
cout<<Contact<<endl;
return0;
   }

5、语句、运算符要将一条放到两行中,可在第一行末尾添加反斜杠(\),也可将字符串字面量分成两个,如下例:

cout<<"hello \world"<<endl;
或是:cout<<"Hello""world"<<endl;

使用后缀运算时,先将值赋给左值,再将右值递增或递减,左值都为执行前的旧值;使用前缀运算就相反,先将值递增或递减,再将结果赋给左值。

++变量名 一般优于 变量名++

#include<bitset>cin>>InputNum;
bitset<8>InputBits (InputNum)  #转换为二进制bitset<8>BitwiseNOT= (~InputNum) #按位运算符Notbitset<8>BitwiseAND= ( ) #AND运算BitwiseOR= ( )
BitwiseXOR=( ) #异或运算

6、控制流程序字符初始化一般用:char userselection= '\0; 死循环一般用来检测操作系统USB接口是否连接了设备,只要系统一直在运行,这种活动就不会停止。一个函数可以包含多条return语句7、函数重载名称和返回类型相同,参数不同的函数称为重载函数。在应用程序中,如果使用不同的参数调用具有特定名称和返回类型的函数,重载函数将很有用。按引用传递函数即不是以返回值的方式而是以引用参数的方式提供给函数,如下所示:

#include<iostream>#include<string>usingnamespacestd;
constdoublePi=3.1416;
voidArea(doubleradius, double&result)
{
result=Pi*radius*radius;
}
intmain()
{
cout<<"enter radius:";
doubleradius=0;
cin>>radius;
doubleAreaFet=0;
Area(radius, AreaFet);
cout<<"the area is:"<<AreaFet<<endl;
return0;
}

8、内联函数当定义一个函数时,执行函数的开销有可能非常高,所以使用关键字inline可以节省内存空间,将函数的内容直接放到它调用的地方,以提高代码的执行速度。但是应尽量少用关键字inline。

inlinelongDoubleNum(intInputNum)
{
description;
}

9、lambda函数lambda函数语法如下:[optional parameters] (parameter list){statements ;}代码如下:

#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;
voidDisplayNums(vector<int>&DynArray)
{
for_each(DynArray.begin(), DynArray.end(), \               [ ](intElement) {cout<<Element<<" "; });
cout<<endl;
}
intmain()
{
vector<int>MyNumbers;
MyNumbers.push_back(501);
MyNumbers.push_back(-1)MyNumbers.push_back(25);
MyNumbers.push_back(-35);
DisplayNums(MyNumbers);
cout<<"sorting them in descend orders"<<endl;
sort(MyNumbers.begin(), MyNumbers.end(), \               [ ](intNum1, intNum2) {return (Num2<Num1); });
DisplayNums(MyNumbers);
return0;
}

当定义函数提供形式参数时,要将所有有默认参数值的参数放在列表末尾,要么给所有参数都指定默认值。

相关文章
|
5月前
|
算法 C++
算法笔记:递归(c++实现)
算法笔记:递归(c++实现)
|
5月前
|
编译器 C++
《Effective C++ 改善程序与设计的55个具体做法》 第一章 笔记
《Effective C++ 改善程序与设计的55个具体做法》 第一章 笔记
|
3月前
|
C++ 容器
【C/C++笔记】迭代器
【C/C++笔记】迭代器
25 1
|
3月前
|
存储 安全 程序员
【C/C++笔记】迭代器范围
【C/C++笔记】迭代器范围
65 0
|
4月前
|
C++ Windows
FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
在Windows上使用Visual Studio 2022进行FFmpeg和SDL2集成开发,首先安装FFmpeg至E:\msys64\usr\local\ffmpeg,然后新建C++控制台项目。在项目属性中,添加FFmpeg和SDL2的头文件及库文件目录。接着配置链接器的附加依赖项,包括多个FFmpeg及SDL2的lib文件。在代码中引入FFmpeg的`av_log`函数输出"Hello World",编译并运行,若看到"Hello World",即表示集成成功。详细步骤可参考《FFmpeg开发实战:从零基础到短视频上线》。
152 0
FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
|
6月前
|
存储 C++ 容器
黑马c++ STL部分 笔记(7) list容器
黑马c++ STL部分 笔记(7) list容器
|
6月前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(5) 常用算术生成算法
黑马c++ STL常用算法 笔记(5) 常用算术生成算法
|
6月前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(4) 常用拷贝和替换算法
黑马c++ STL常用算法 笔记(4) 常用拷贝和替换算法
|
6月前
|
存储 算法 搜索推荐
黑马c++ STL常用算法 笔记(3) 排序算法
黑马c++ STL常用算法 笔记(3) 排序算法
|
6月前
|
算法 C++
黑马c++ STL常用算法 笔记(2) 查找算法
黑马c++ STL常用算法 笔记(2) 查找算法