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

向量

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

创新互联公司专业为企业提供新建网站建设、新建做网站、新建网站设计、新建网站制作等企业网站建设、网页设计与制作、新建企业网站模板建站服务,十年新建做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

 
 
 
 
  1. #include 

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

 
 
 
 
  1. std::vector name;

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

 
 
 
 
  1. std::vector calories_today;

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

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

初始化向量

 
 
 
 
  1. std::vector some_vector = {0.25, 0.50, 0.75, 1.00};

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

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

 
 
 
 
  1. #include 
  2. #include 
  3. int main()
  4. {
  5.     std::vector some_vector = {0.25, 0.50, 0.75, 1.00};
  6.     std::cout << some_vector[0] << "\n";
  7.     std::cout << some_vector[1] << "\n";
  8.     std::cout << some_vector[2] << "\n";
  9.     std::cout << some_vector[3] << "\n";
  10. }
  11. 0.25
  12. 0.5
  13. 0.75
  14. 1

添加和删除元素

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

 
 
 
 
  1. #include 
  2. #include 
  3. int main()
  4. {
  5.     std::vector some_vector = {0.25, 0.50, 0.75, 1.00};
  6.     some_vector.push_back(2);
  7.     std::cout << some_vector[4] << "\n";
  8. }

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

 
 
 
 
  1. some_vector.pop_back();

向量的大小

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

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

 
 
 
 
  1. #include 
  2. #include 
  3. int main()
  4. {
  5.     std::vector some_vector = {5,7,9,4,6,8};
  6.     std::cout << some_vector.size() << "\n";
  7. }

向量操作

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

 
 
 
 
  1. #include 
  2. #include 
  3. int main()
  4. {
  5.     std::vector vector = {5, 7, 9, 4, 6, 8};
  6.     for (int i = 0; i < vector.size(); i++)
  7.     {
  8.         vector[i] = vector[i] + 10;
  9.         std::cout << vector[i]  << "\n";
  10.     }
  11. }
  12. 15
  13. 17
  14. 19
  15. 14
  16. 16
  17. 18

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

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

然后程序应该输出

 
 
 
 
  1. Sum of even numbers is 12
  2. Product of odd numbers is 27

具体代码如下

 
 
 
 
  1. #include 
  2. #include 
  3. int main()
  4. {
  5.     int total_even = 0;
  6.     int product_odd = 1;
  7.     std::vector vector = {2, 4, 3, 6, 1, 9};
  8.     for (int i = 0; i < vector.size(); i++)
  9.     {
  10.         if (vector[i] % 2 == 0){
  11.            total_even = vector[i] + total_even;
  12.         }else{
  13.            product_odd = vector[i] * product_odd;
  14.         }
  15.     }
  16.     std::cout << "Sum of even: " << total_even << "\n";
  17.     std::cout << "Product of odd: " << product_odd;
  18. }

数组

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

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

 
 
 
 
  1. int score[4];

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

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

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

 
 
 
 
  1. #include 
  2. using  namespace std;
  3. int main() {
  4.  //定义方式1
  5.  //数据类型 数组名[元素个数];
  6.  int score[10];
  7.  //利用下标赋值
  8.  score[0] = 100;
  9.  score[1] = 99;
  10.  score[2] = 85;
  11.  //利用下标输出
  12.  cout << score[0] << endl;
  13.  cout << score[1] << endl;
  14.  cout << score[2] << endl;
  15.  //第二种定义方式
  16.  //数据类型 数组名[元素个数] =  {值1,值2 ,值3 ...};
  17.  //如果{}内不足10个数据,剩余数据用0补全
  18.  int score2[10] = { 100, 90,80,70,60,50,40,30,20,10 };
  19.  
  20.  //逐个输出
  21.  //cout << score2[0] << endl;
  22.  //cout << score2[1] << endl;
  23.  //一个一个输出太麻烦,因此可以利用循环进行输出
  24.  for (int i = 0; i < 10; i++)
  25.  {
  26.   cout << score2[i] << endl;
  27.  }
  28.  //定义方式3
  29.  //数据类型 数组名[] =  {值1,值2 ,值3 ...};
  30.  int score3[] = { 100,90,80,70,60,50,40,30,20,10 };
  31.  for (int i = 0; i < 10; i++)
  32.  {
  33.   cout << score3[i] << endl;
  34.  }
  35. }

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

具体代码如下

 
 
 
 
  1. #include 
  2. using namespace std;
  3. int main() {
  4.  int arr[9] = { 4,2,8,0,5,7,1,3,9 };
  5.  for (int i = 0; i < 9 - 1; i++)
  6.  {
  7.   for (int j = 0; j < 9 - 1 - i; j++)
  8.   {
  9.    if (arr[j] > arr[j + 1])
  10.    {
  11.     int temp = arr[j];
  12.     arr[j] = arr[j + 1];
  13.     arr[j + 1] = temp;
  14.    }
  15.   }
  16.  }
  17.  for (int i = 0; i < 9; i++)
  18.  {
  19.   cout << arr[i] << endl;
  20.  }
  21.     
  22. }

网页标题:详解C++数据结构向量和数组
分享链接:http://www.shufengxianlan.com/qtweb/news5/408805.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联