前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【小白学习C++ 教程】五、C++数据结构向量和数组

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

作者头像
润森
发布2022-08-18 09:17:36
5010
发布2022-08-18 09:17:36
举报
文章被收录于专栏:毛利学Python

@Author:Runsen

向量

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

代码语言:javascript
复制
#include <vector>

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

代码语言:javascript
复制
std::vector<type> name;

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

代码语言:javascript
复制
std::vector<int> calories_today;

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

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

初始化向量

代码语言:javascript
复制
std::vector<double> some_vector = {0.25, 0.50, 0.75, 1.00};

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

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

代码语言:javascript
复制
#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

添加和删除元素

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

代码语言:javascript
复制
#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";
}

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

代码语言:javascript
复制
some_vector.pop_back();

向量的大小

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

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

代码语言:javascript
复制
#include <iostream>
#include <vector>

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

向量操作

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

代码语言:javascript
复制
#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

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

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

然后程序应该输出

代码语言:javascript
复制
Sum of even numbers is 12
Product of odd numbers is 27

具体代码如下

代码语言:javascript
复制
#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;
}

数组

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

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

代码语言:javascript
复制
int score[4];

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

代码语言:javascript
复制
int score[4] = {1,2,3,4}

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

代码语言:javascript
复制
#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;
 }

}

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

具体代码如下

代码语言:javascript
复制
#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;
 }
    

}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 向量
  • 初始化向量
  • 添加和删除元素
  • 向量的大小
  • 向量操作
  • 数组
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档