C++基础学习(三)数组

关于数组的语法点还是很多的,基本数组,字符型数组,指针数组,还有C++标准库中的关于数组的容器,今天只简单总结下,关于C++中数组的声明和使用的一些细节。

1、一维数组

#include<iostream>

using namespace std;

void main()
{
	int myArray1[4] = { 1, 2, 3, 4 };   //常用的方式
	int myArray2[4] = {};    //可以不设定初值,就默认数组中全为0

	int myArray3[] {1, 2, 3, 4};  //在[]中可不写数组长度,但必须给该数组初值,C++会根据你给的数组初值分配相应的空间
	                                //在这里myArray3的数组长度就是4,索引为0~3

	double myArray4[12]{1.1, 2.23, 3.4};   //也可以不写等号

	cout << myArray1[0] << endl;    //数组的索引从0开始
	cout << myArray2[1] << endl;
	cout << myArray4[10] << endl;   //没被赋值的部分也都为0

	myArray1[0] = 99;  //可通过索引改变数组中对应的值
	cout << myArray1[0] << endl;    //输出值为99


	//以下都是错误操作
	cout << myArray1[10] << endl;   //error 当我们访问的索引超出了该数组的边界时,C++也不会报错,但这样做是错误的
	myArray1 = myArray2;            //直接将一个数组变量的赋值给另一个数组变量时错误的
}

2、多维数组

#include<iostream>

using namespace std;

void main()
{	
   //初始化多维数组,这是一个3行4列的多维数组,格式我这样写只是为了美观
   int myArrys1[3][4]
   {
	   { 1, 2, 3, 4 }, 
	   { 5, 6, 7, 8 },
	   { 9, 10, 11, 12 } 
   };

   for (int i = 0; i < 3; i++)   //循环3次,即3行
   {
	   for (int j = 0; j < 4; j++)   //循环4次,即4列
	   {
		   cout << myArrys1[i][j] << "  ";  //可以想象成有个3行4列的表格,我们从左向右,从上到下输出每个格子中的值
	   }
	   cout << endl;   //每输出完一行换行
   }
}

3、字符型数组

#include<iostream>
#include<string>   //为了可以操作string而引入的C++的string类

using namespace std;

void main()
{
	//以这种方式写的字符型数组一定要加'\0',表示字符结束,当然不写的话你也可以看看输出了什么
	char name[] {'M', 'r', ' ', 'S', 'u', 'X', 'i', '\0'};
	//字符型数组可直接输出数组中的所有内容,
	cout << name << endl;

	int a[4]{1, 2, 3, 4};
	//如果是数值型数组,不写索引直接输出会输出一串十六进制,这是该数组在内存中的地址
	cout << a << endl;    
  
	//这种方式更加简便且不用加'\0'
	char chArray[]{"My name is SuXi"};
	cout << chArray << endl;

	//这里说下C++的标准库中有专门针对字符串而写的容器string,有很多操作方法,大家可以自行去查看和学习
	string myStr = "This is the best";
	cout << myStr;
}

关于cin输入流输入字符串的一些问题:

#include<iostream>

using namespace std;

void main()
{
	//char chArray1[20]{};

	//cin >> chArray1;            //这里我输入Mr SuXi 
	//cout << chArray1 << endl;   //最终只输出了Mr,因为提取运算符>>默认输出终止符为空格、制表符Tab和回车,
	                              //在我敲击空格时cin就不在接收输入了

	char chArray2[20]{};

	//这里我们用getline()函数,第二个参数为限定的输入长度
	cin.getline(chArray2, 20);
	cout << chArray2 << endl;         //可以得出完整的一行字符串

	//此时只有输入*时再按回车才会结束输入,因此可一下子输出多行字符串
	cin.getline(chArray2, 20, '*');
	cout << chArray2 << endl;          //可以得出完整的一行字符串
}

4、数组的替代品

     原生态的数组很不方便,定义的时候就要设定好设定数值长度,之后就无妨修改这个数组的容量,同时访问数组中的数值只能用索引的方式,完全不灵活,然而C++的标准模板库中有数组的替代品也就是关于数组的容器类,更容易操作,安全性高,灵活性也更大,这里只简要介绍下。

#include<iostream>
#include<array>     //引入C++标准模板库中的array类,才可以操作array容器

using namespace std;

void main()
{
	//使用array容器时,<>中传递数据类型和数组长度
	array<int, 10> myArray = { 1, 2 };
	//可直接输出数组的长度
	cout << myArray.size() << endl;
	//fill()函数可以将数组中的所有值变为你传递进去的值
	myArray.fill(29);
       
	for (int i = 0; i < myArray.size(); i++)
	{
		cout << myArray[i] << " ";
	}
}

array为固定长的容器,即在定义时必须要设定长度,虽然感觉和原始的数组没什么太大却别,但可以提高安全性,这个在初学阶段感觉不到,还有array提供很多方便的操作数组的方法,大家可以去去试试。

下面的vector容器就灵活多了,它是长度可变的,光是这一项能力就让它可以解决我们很多编程问题。

#include<iostream>
#include<vector>    //引入C++标准模板库中的vector类,才可以操作vector容器

using namespace std;

void main()
{
	//定义时只需传递数据类型
	vector<int> list;

	//通过该函数向我们的数组中插入数据,这是list的长度和容量都会增加
	list.push_back(123);
	cout << "数组长度为:" << list.size() << " 容量为: " << list.capacity() << endl;
	list.push_back(999);
	//可以看到长度和容量都增长了
	cout << "数组长度为:" << list.size() << " 容量为: " << list.capacity() << endl;

	cout << list[0] << " " << list[1] << endl;	
}


关于C++数组方面的内容很多,C++标准模板类中的相应容器类也不少,我们只需要在合适的时候使用合适的容器和方法就行了。


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值