@Author:Runsen

文章目录

  • 向量
  • 初始化向量
  • 添加和删​​除元素
  • 向量的大小
  • 向量操作
  • 数组

向量

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

#include <vector>

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

std::vector<type> name;

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

std::vector<int> calories_today;

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

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

初始化向量

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

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

向量是 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

添加和删​​除元素

要将新元素添加到向量的末尾,我们可以使用该.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";
}

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

some_vector.pop_back();

向量的大小

<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";
}

向量操作

我们可以使用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

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

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

然后程序应该输出

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

具体代码如下

#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;
}

数组

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

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

int score[4];

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

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

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

#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 }。编写一个程序来实现冒泡排序。

具体代码如下

#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;}}

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

  1. 【小白学习PyTorch教程】五、在 PyTorch 中使用 Datasets 和 DataLoader 自定义数据

    「@Author:Runsen」 有时候,在处理大数据集时,一次将整个数据加载到内存中变得非常难. 因此,唯一的方法是将数据分批加载到内存中进行处理,这需要编写额外的代码来执行此操作.对此,PyTor ...

  2. 【小白学习C++ 教程】十五、C++ 中的template模板和泛型

    @Author:Runsen template模板在 C++ 中一个简单但非常强大的工具.简单的想法是将数据类型作为参数传递,这样我们就不需要为不同的数据类型编写相同的代码. C++ 添加了两个新关键 ...

  3. 【小白学习PyTorch教程】十五、BERT:通过PyTorch来创建一个文本分类的Bert模型

    @Author:Runsen 2018 年,谷歌发表了一篇题为<Pre-training of deep bidirectional Transformers for Language Unde ...

  4. 【小白学习keras教程】五、基于reuters数据集训练不同RNN循环神经网络模型

    @Author:Runsen 文章目录 循环神经网络RNN Load Dataset 1. Vanilla RNN 2. Stacked Vanilla RNN 3. LSTM 4. Stacked ...

  5. 【小白学习PyTorch教程】十一、基于MNIST数据集训练第一个生成性对抗网络

    「@Author:Runsen」 GAN 是使用两个神经网络模型训练的生成模型.一种模型称为生成网络模型,它学习生成新的似是而非的样本.另一个模型被称为判别网络,它学习区分生成的例子和真实的例子. 生 ...

  6. 【小白学习PyTorch教程】六、基于CIFAR-10 数据集,使用PyTorch 从头开始​​构建图像分类模型...

    「@Author:Runsen」 图像识别本质上是一种计算机视觉技术,它赋予计算机"眼睛",让计算机通过图像和视频"看"和理解世界. 在开始阅读本文之前,建议先 ...

  7. 【小白学习PyTorch教程】十六、在多标签分类任务上 微调BERT模型

    @Author:Runsen BERT模型在NLP各项任务中大杀四方,那么我们如何使用这一利器来为我们日常的NLP任务来服务呢?首先介绍使用BERT做文本多标签分类任务. 文本多标签分类是常见的NLP ...

  8. 【小白学习PyTorch教程】十九、 基于torch实现UNet 图像分割模型

    @Author:Runsen 在图像领域,除了分类,CNN 今天还用于更高级的问题,如图像分割.对象检测等.图像分割是计算机视觉中的一个过程,其中图像被分割成代表图像中每个不同类别的不同段. 上面图片 ...

  9. 【小白学习tensorflow教程】一、tensorflow基本操作、快速构建线性回归和分类模型

    @Author:Runsen TF 目前发布2.5 版本,之前阅读1.X官方文档,最近查看2.X的文档.tensorflow是非常强的工具,生态庞大. tensorflow提供了Keras的分支,这里 ...

最新文章

  1. python将一个json字典转换为一个python对象
  2. MQTT protocol level的处理
  3. 双边z变换公式_光通信与数学 傅里叶变换
  4. Ubuntu13.10纯文本模式/终端中文乱码解决方法
  5. P3247-[HNOI2016]最小公倍数【分块,并查集】
  6. 设计模式入门,工厂模式,c++代码实现
  7. 第七章 数据库设计(联系毕业论文))
  8. [直观学习排序算法] 视觉直观感受若干常用排序算法
  9. Nifi flow 备份恢复
  10. 《tcpip详解》卷一第2章
  11. 在线地图地址3857+4326
  12. 树莓派4B:智能植物管家
  13. 7-3 打印九九口诀表
  14. Podman使用详解
  15. 电脑window medio player播放器可倍速播放
  16. 萌新linux的基础笔记
  17. MATLAB 车牌识别程序介绍 SVM、神经网络[毕业设计]
  18. 全球365隐私政策服务协议
  19. jQuery添加插入元素技巧
  20. 月薪过万算中产吗?别听专家忽悠,算清这8本账:你这是骂我

热门文章

  1. hisi mmz内存管理
  2. 密码学 / 什么是数字签名
  3. c语言用switch编写运输运费,求助。。关于用switch编写简易计算器
  4. c++ 数组置0_0基础学习C语言第七章:数组(1)
  5. 转账 程序c语言,求C语言原创小游戏源代码(运行成功可支付宝转账)急!!!
  6. 员工转正申请书_员工有了归属感 企业实现大发展!通机股份在党工共建中摸索经验...
  7. Python接口测试-模块引用与映射
  8. 20165230 2017-2018-2 《Java程序设计》第9周学习总结
  9. 二叉树的基本操作之二叉排序树
  10. RecyclerView因版本问题无法加载