Search K
Appearance
Appearance
首先要准备好编译cpp的软件(我这里使用vs studio 2022作为演示)
在下载完vs studio 2022后,打开时会弹出下载的组件,这里选择c++
在vs中新建一个cpp程序需要勾选控制台项目(如下图)
打开后会VS会自动编写基础代码(如果使用dev-cpp就不会自动构建)
基础代码如下:
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!\n";
return 0;
}
而不同之处在于VS的代码是这样的:
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
}
那么不同在哪里呢?
在vs生成的代码中非常明显的被吞掉了一行using namespace std;
,而取而代之的是在输出时在cout
前加了std::
但其实两者在输出没有什么不同,那为什么可以去掉这一行而不报错呢
这是因为在cpp中std::
替代了using namespace std;
的作用,但是它的缺点在于在之后几乎每一行代码前都要加std::
,显的很麻烦,所以通常都会直接在前面加上using namespace std
现在运行一下你的第一个代码吧! 你可以看到输出结果如下图
在cpp中的变量格式稍微有点复杂
特殊定义 变量类型 变量名 = 变量数据;
这里的特殊定义指的是类似const
、unsigned
等
而变量类型指的是类似int
、float
等 值得注意的是cpp并不需要通过导入float.h、string.h来使用对应的类型
直接使用就可以
为啥要把他俩放在一起呢
因为经常有人会将这俩搞混
对于python转cpp的人来说,py的字符和字符串统称为字符串,也就是说在python中单引号(')与双引号(")用法是一样的
所以会出现一种情况
char a = '123abc';
其实在vs中会直接报错,但不可避免的会出现这种错误
因此要将他俩区分开
在cpp中单引号指的是字符,而string才指字符串
所以正确的是:
char a = 'a';
string b = "abc";
他有一个值得注意的点
他的值可以是一个int类型的整数,也可以是由单引号包括的字符,就比如
char a = 'a';
char b = 97;
他们两个其实是相等的,不行你可以运行
#include <iostream>
using namespace std;
int main()
{
int a = 'a';
if (a == 'a') {
cout << '1';
}
else {
cout << '0';
}
}
来验证一下,程序输出1说明他们相等,相反输出0说明是不相等的
在一些编译器中,你输入一个字符串但变量类型是char,会自动选取字符串中的第一个字符存放并不会报错
string指的是字符串,顾名思义,是由一个个字符串成的
而他还有另一种方法char[] = string
这两种是相同的使用方法,而char[]
指的是后面的数组
他可以存放许多字符在一个变量中
在c++中,输出使用的是cout
,输入用的是cin
简单来记就是
c + out = cout
C++ 输出
它的使用方法是cout << 1 << '2' << "abc" << a << endl;
让我们分解一下:
>>
cout << endl << 1 << endl;
简单来记就是
c + in = cout
C++ 输入
它的使用方法是cin >> a >> b;
分解开来就是:
<<
目前有两种数组,分别是静态数组和动态数组
就是规定好数组大小且不能更改数组大小的数组
使用char a[10]
来定义一个大小为10的字符数组(就是上面提到的string),同理,创建一个大小为四的整型数组就是int a[4]
,其中a为变量名,即格式为
数据类型 变量名称[数组大小] = 数组
在格式中的数组与等号可以不写,但是大小始终不变,数组中大括号在左右,数据与数据用逗号隔开,如:int a[10] = [1,2,3,4,5,6,7,8,9,10];
在使用动态数组前,要导入一个库<vector>
使用#include <vector>
函数导入这个库,但想使用动态数组的话是不是与静态数组的char a[vector]一样呢?
并不是,要想使用vector动态数组,它的使用方法是这样的:
vector<类型> 变量名 = {1,2,3};
当然,两者的相同点是都可以直接在定义时直接赋值
既然是动态数组,那么如何更改数组内的数据呢?
首先就是常用的添加元素,我们使用vector.push_back
来存入,下面是一个存入的示例:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> a = {1,2,3,4,5};
a.push_back(6);
for (int i = 0;i < a.size;i++) {
cout << a[i] << ',';
}
}
返回结果:
1,2,3,4,5
在这里,vector.push_back
的作用是在a数组的末尾添加一个整数6 而a.size
的作用是获取目前a数组的大小,在添加6之后,a目前的大小为6个整数,所以a.size的返回值为6,在for循环的条件中,索引是从0开始,这样for循环中i的值的变化过程就是
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
从而获取动态数组中的每个值
要注意的是vector.push_back()
只能够在数组的末尾处添加元素
要想移除元素,要使用到vector.pop_back
函数
示例如下
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> a = {1,2,3,4,5};
a.pop_back();
for (int i = 0;i < a.size;i++) {
cout << a[i] << ',';
}
}
返回结果:
1,2,3,4
很明显的发现,代码将a的最后一位移除了
没错,pop_back
与push_back
类似,两者都是只能在数组的末端进行操作
他们和接下来要讲的栈非常相似
栈(Stack)是一种基本的数据结构,它按照特定的顺序进行插入和删除操作,这种顺序被称作“后进先出”(Last In First Out, LIFO)。这意味着最后进入栈的元素将会是第一个被删除的元素。 以下是栈的一些主要特点和操作:
因此可以把动态数组看成一个栈,它只能操作最后一个数据 举个例子
我们现在有一个栈,里面现在有五个元素
1,2,3,4,5
压入6,7
1,2,3,4,5 <== 6
1,2,3,4,5,6 <== 7
1,2,3,4,5,6,7
移除7
1,2,3,4,5,6,7 ==> 7
1,2,3,4,5,6
全部弹出
1,2,3,4,5,6 ==> 6
1,2,3,4,5 ==> 5
1,2,3,4 ==> 4
1,2,3 ==> 3
1,2 ==> 2
1 ==> 1
None
以上就是栈的出入顺序,恭喜你,基本了解栈了