C++中vector的用法

简介: ⭐一、vector的简介vector的中文译为向量,因此vector是C++STL中一个向量类型的容器。vector还是C++STL中最常用也很实用的一个容器,它的功能十分的强大,可以容纳多种类型的数据。在一些特定的情况下普通的数组使用起来会比较局限,因为普通数组只能实现一对一的映射而不能实现一对多的映射,而vector的引入就可以很好的帮助我们解决这个问题。vector的大小是实时更新变化的,非常的灵活多用,因此vector也可以称之为动态数组。

⭐一、vector的简介

vector的中文译为向量,因此vector是C++STL中一个向量类型的容器。vector还是C++STL中最常用也很实用的一个容器,它的功能十分的强大,可以容纳多种类型的数据。在一些特定的情况下普通的数组使用起来会比较局限,因为普通数组只能实现一对一的映射而不能实现一对多的映射,而vector的引入就可以很好的帮助我们解决这个问题。vector的大小是实时更新变化的,非常的灵活多用,因此vector也可以称之为动态数组。

使用vector时需要包含头文件:

#include<vector>

⭐二、vector的定义及初始化

  • 定义:
    vector<数据类型>变量名
    例:
//vector的定义 
vector<int> v1; //定义一个储存数据类型为int的vector容器v1 
vector<double> v2; //定义一个储存数据类型为double的vector容器v2 
vector<string> v3; //定义一个储存数据类型为string的vector容器v3
vector<int> v4[N]; //定义一个储存数据类型为int的vector数组,N为大小,相当于二维数组 
vector<double> v5[N]; //定义一个储存数据类型为double的vector数组,N为大小,相当于二维数组 
vector<vector<int> > v6; //定义一个储存数据类型为int的vector动态数组,相当于二维数组 

⭐三、vector中常用的成员函数

关于vector的常用函数:

begin()//返回头部迭代器
end()//返回尾部+1迭代器
size()//返回容器中元素个数
rbegin()//返回逆头部迭代器
rend()//返回逆尾部-1迭代器
front()//返回第一个元素
back()//返回最后一个元素
push_back()//在容器末尾添加一个数据 
emplace_back()//同push_back()作用一样 
pop_back()//删除最后一个元素
empty()//判断是否为空
insert()//在指定位置插入元素
erase()//在指定位置删除元素
clear()//清空容器中所有元素 

⭐四、vector的遍历

vector的遍历一般有三种方法,接下来就我们就来一一看一下吧!

  • 1.通过迭代器iterator遍历
#include<iostream>
#include<vector>
using namespace std;
int main()
{
  vector<int> v1; //定义一个vector容器
  v1.push_back(1); //放入数据
  v1.push_back(2);
  v1.push_back(3);
  v1.push_back(4);
  vector<int>::iterator it;  //定义一个迭代器it
  for(it=v1.begin();it!=v1.end();it++) //通过迭代器遍历输出
  {
    cout<<*it<<" ";
  }
}
  • 2.通过下标遍历
#include<iostream>
#include<vector>
using namespace std;
int main()
{
  vector<int> v1;
  v1.push_back(1);
  v1.push_back(2);
  v1.push_back(3);
  v1.push_back(4);
  for(int i=0;i<v1.size();i++)
  {
    cout<<v1[i]<<" ";
  } 
}
  • 3.通过foreach遍历
#include<iostream>
#include<vector>
using namespace std;
int main()
{
  vector<int> v1;
  v1.push_back(1);
  v1.push_back(2);
  v1.push_back(3);
  v1.push_back(4);
  for(int k:v1)
  {
    cout<<k<<" ";
  }
}

⭐五、vector的真题巩固

下面是PTA中团体程序设计天梯赛-练习集的一道L2二阶题目,难度不大,在学完本文后正好合适拿来给大家练练手!

下方为题目链接!!!!!!!!

学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。


输入格式:

输入第一行给出3个正整数N(3 < N ≤10

4

,学生总数)、k(3 ≤ k ≤ 10,每份作业的评审数)、M(≤ 20,需要输出的学生数)。随后N行,每行给出一份作业得到的k个评审成绩(在区间[0, 100]内),其间以空格分隔。


输出格式:

按非递减顺序输出最后得分最高的M个成绩,保留小数点后3位。分数间有1个空格,行首尾不得有多余空格。


输入样例:

6 5 3

88 90 85 99 60

67 60 80 76 70

90 93 96 99 99

78 65 77 70 72

88 88 88 88 88

55 55 55 55 55

输出样例:

87.667 88.000 96.000


AC代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int n,m,k;
  cin>>n>>k>>m;
  vector<int>stu[n+1];
  double final[n+1];
  double x;
  for(int i=1;i<=n;i++)
  {
    double sum=0;
    for(int j=1;j<=k;j++)
    {
      cin>>x;
      sum+=x;
      stu[i].push_back(x);
    }
    sort(stu[i].begin(),stu[i].end());
    sum=sum-stu[i][0]-stu[i][k-1];
    final[i]=sum/(stu[i].size()-2); 
  }
  sort(final+1,final+n+1);
  for(int i=n-m+1;i<=n;i++)
  {
    printf("%.3lf",final[i]);
    if(i!=n)
      cout<<" ";
  }   
}

⭐六、写在最后

OK本文的学习就到此结束啦,希望本文可以帮助到各位有需要的小伙伴们喔,也希望各位小伙伴们不要吝惜手里的三连哦!❤️❤️❤️

💕 回头看,轻舟已过万重山,向前看,前路漫漫亦漫漫。

相关文章
|
12天前
|
存储 安全 编译器
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
51 0
|
1月前
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
33 3
【C++】map、set基本用法
|
1月前
|
存储 编译器 C语言
【c++丨STL】vector的使用
本文介绍了C++ STL中的`vector`容器,包括其基本概念、主要接口及其使用方法。`vector`是一种动态数组,能够根据需要自动调整大小,提供了丰富的操作接口,如增删查改等。文章详细解释了`vector`的构造函数、赋值运算符、容量接口、迭代器接口、元素访问接口以及一些常用的增删操作函数。最后,还展示了如何使用`vector`创建字符串数组,体现了`vector`在实际编程中的灵活性和实用性。
55 4
|
12天前
|
存储 对象存储 C++
C++ 中 std::array<int, array_size> 与 std::vector<int> 的深入对比
本文深入对比了 C++ 标准库中的 `std::array` 和 `std::vector`,从内存管理、性能、功能特性、使用场景等方面详细分析了两者的差异。`std::array` 适合固定大小的数据和高性能需求,而 `std::vector` 则提供了动态调整大小的灵活性,适用于数据量不确定或需要频繁操作的场景。选择合适的容器可以提高代码的效率和可靠性。
33 0
|
12天前
|
C++
第十三问:C++中静态变量的用法有哪些?
本文介绍了 C++ 中静态变量和函数的用法及原理。静态变量包括函数内的静态局部变量和类中的静态成员变量,前者在函数调用间保持值,后者属于类而非对象。静态函数不能访问非静态成员,但可以通过类名直接调用。静态链接使变量或函数仅在定义文件内可见,避免命名冲突。
27 0
|
16天前
|
存储 编译器 C语言
【c++丨STL】vector模拟实现
本文深入探讨了 `vector` 的底层实现原理,并尝试模拟实现其结构及常用接口。首先介绍了 `vector` 的底层是动态顺序表,使用三个迭代器(指针)来维护数组,分别为 `start`、`finish` 和 `end_of_storage`。接着详细讲解了如何实现 `vector` 的各种构造函数、析构函数、容量接口、迭代器接口、插入和删除操作等。最后提供了完整的模拟实现代码,帮助读者更好地理解和掌握 `vector` 的实现细节。
27 0
|
2月前
|
存储 C++ 索引
【C++打怪之路Lv9】-- vector
【C++打怪之路Lv9】-- vector
26 1
|
2月前
|
编译器 C++
【C++】—— vector模拟实现
【C++】—— vector模拟实现
|
2月前
|
算法 C++ 容器
C++之打造my vector篇(下)
C++之打造my vector篇(下)
35 0
|
2月前
|
存储 编译器 C++
C++之打造my vector篇(上)
C++之打造my vector篇(上)
35 0