详解C++数据结构向量和数组

向量

#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(); 

向量的大小

不仅存储元素;它还存储向量的大小:

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

 【编辑推荐】

鸿蒙,就算套壳安卓又能怎样呢? Kubernetes为什么要弃用Docker? 从“PPT系统”走向现实:HarmonyOS,你真香了吗? 这6款Python IDE&代码编辑器,你都用过吗? Kubernetes实践之优雅终止
滇ICP备2023000592号-31