文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-03 03:47

关注
  1. #include  

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

  1. std::vector name

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

  1. std::vector<int> calories_today; 

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

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

初始化向量

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

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

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

  1. #include  
  2. #include  
  3.  
  4. int main() 
  5.     std::vector<double> 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 

添加和删除元素

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

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

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

  1. some_vector.pop_back(); 

向量的大小

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

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

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

向量操作

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

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

数组

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

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

  1. int score[4]; 

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

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

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

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

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

具体代码如下

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

 【编辑推荐】

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

 

来源:Python之王内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯