【小白学习C++ 教程】五、C++数据结构向量和数组

举报
毛利 发表于 2021/07/14 23:32:41 2021/07/14
【摘要】 @Author:Runsen 文章目录 向量初始化向量添加和删​​除元素向量的大小向量操作数组 向量 #include,是一个预处理器指令,它告诉编译器包含后面的任何库。在我们的例子中,这是标准vector库。 #include <vector> 1 创建向量的语法如下所示: std::vector<type> name;...

@Author:Runsen

向量

#include,是一个预处理器指令,它告诉编译器包含后面的任何库。在我们的例子中,这是标准vector库。

#include <vector>

  
 
  • 1

创建向量的语法如下所示:

std::vector<type> name;

  
 
  • 1

比如要定义一个int的向量calories_today

std::vector<int> calories_today;

  
 
  • 1

尖括号内是向量的数据类型。尖括号之后是向量的名称。

注意: vector 的类型(即里面存放的是什么数据类型)在声明后是不能改变的。

初始化向量

std::vector<double> some_vector = {0.25, 0.50, 0.75, 1.00};

  
 
  • 1

现在我们有了一个向量,我们如何访问单个元素?这就是索引发挥作用的地方。

向量是 0 索引的,这意味着第一个元素的索引为 0,第二个索引为 1,依此类推
vector[index]在向量名称和内部元素的索引号之后,使用带方括号的表示法。

#include <iostream>
#include <vector>

int main()
{ std::vector<double> some_vector = {0.25, 0.50, 0.75, 1.00}; std::cout << some_vector[0] << "\n"; std::cout << some_vector[1] << "\n"; std::cout << some_vector[2] << "\n"; std::cout << some_vector[3] << "\n";
}

0.25
0.5
0.75
1

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

添加和删​​除元素

要将新元素添加到向量的末尾,我们可以使用该.push_back()函数。

#include <iostream>
#include <vector>

int main()
{ std::vector<double> some_vector = {0.25, 0.50, 0.75, 1.00}; some_vector.push_back(2); std::cout << some_vector[4] << "\n";
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

还可以使用.pop_back().从向量的“后面”删除元素。

some_vector.pop_back();


  
 
  • 1
  • 2

向量的大小

<std::vector>不仅存储元素;它还存储向量的大小:

.size()函数返回向量中的元素数

#include <iostream>
#include <vector>

int main()
{ std::vector<double> some_vector = {5,7,9,4,6,8}; std::cout << some_vector.size() << "\n";
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

向量操作

我们可以使用for循环,可以更改向量中的每个值

#include <iostream>
#include <vector>

int main()
{ std::vector<double> vector = {5, 7, 9, 4, 6, 8}; for (int i = 0; i < vector.size(); i++) { vector[i] = vector[i] + 10; std::cout << vector[i]  << "\n"; }
}

15
17
19
14
16
18

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

编写一个程序来计算向量中偶数之和与奇数之积。

假设我们有一个向量是{2, 4, 3, 6, 1, 9}

然后程序应该输出

Sum of even numbers is 12
Product of odd numbers is 27

  
 
  • 1
  • 2

具体代码如下

#include <iostream>
#include <vector>

int main()
{ int total_even = 0; int product_odd = 1; std::vector<int> vector = {2, 4, 3, 6, 1, 9}; for (int i = 0; i < vector.size(); i++) { if (vector[i] % 2 == 0){ total_even = vector[i] + total_even; }else{ product_odd = vector[i] * product_odd; } } std::cout << "Sum of even: " << total_even << "\n"; std::cout << "Product of odd: " << product_odd;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

数组

数组用于在单个变量中存储多个值,而不是为每个值声明单独的变量。

要声明数组,请定义变量类型,指定数组的名称,后跟方括号 并指定它应存储的元素数:

int score[4];

  
 
  • 1

我们现在已经声明了一个包含四个int数组的变量。要向其中插入值,在大括号内,我们可以使用将值放在逗号分隔的列表中,

int score[4] = {1,2,3,4}

  
 
  • 1

下面是数组具体的定义和取值的方式

#include <iostream>
using  namespace std;
int main() {

	//定义方式1
	//数据类型 数组名[元素个数];
	int score[10];

	//利用下标赋值
	score[0] = 100;
	score[1] = 99;
	score[2] = 85;

	//利用下标输出
	cout << score[0] << endl;
	cout << score[1] << endl;
	cout << score[2] << endl; //第二种定义方式
	//数据类型 数组名[元素个数] =  {值1,值2 ,值3 ...};
	//如果{}内不足10个数据,剩余数据用0补全
	int score2[10] = { 100, 90,80,70,60,50,40,30,20,10 }; //逐个输出
	//cout << score2[0] << endl;
	//cout << score2[1] << endl;

	//一个一个输出太麻烦,因此可以利用循环进行输出
	for (int i = 0; i < 10; i++)
	{
		cout << score2[i] << endl;
	}

	//定义方式3
	//数据类型 数组名[] =  {值1,值2 ,值3 ...};
	int score3[] = { 100,90,80,70,60,50,40,30,20,10 };
	for (int i = 0; i < 10; i++)
	{
		cout << score3[i] << endl;
	}

}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

假设我们有一个数组是{ 4,2,8,0,5,7,1,3,9 }。编写一个程序来实现冒泡排序。

具体代码如下

#include <iostream>
using namespace std;
int main() {

	int arr[9] = { 4,2,8,0,5,7,1,3,9 };

	for (int i = 0; i < 9 - 1; i++)
	{
		for (int j = 0; j < 9 - 1 - i; j++)
		{ if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; }
		}
	}

	for (int i = 0; i < 9; i++)
	{
		cout << arr[i] << endl;
	} }


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。

原文链接:maoli.blog.csdn.net/article/details/117459343

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。