目录
🤔vector模板和deque的简单介绍:
🤔vector和deque的主要不同之处:
🤔今天我们用vector模板和deque模板实现以下简单的功能:
代码实现:
🤔讲解:
🤔vector模板和deque的简单介绍:
vector和deque都是C++ STL(标准模板库)中的容器模板,用于存储和管理数据。它们都提供了可动态调整大小的数组,允许在任何位置插入和删除元素。
🤔vector和deque的主要不同之处:
内部数据结构的实现方式不同:vector使用连续的内存块来存储元素,所以随机访问元素的速度很快,但在插入和删除元素时需要移动后续元素的成本可能比较高。deque则采用了一种双向队列的数据结构,可以在两端快速插入和删除元素,但在随机访问元素时的效率较低。
关于这两个模板的详细介绍可以看以下两篇文章:
C++ vector类成员函数介绍_我是一盘牛肉的博客-CSDN博客
C++ deque类成员函数介绍_我是一盘牛肉的博客-CSDN博客
🤔今天我们用vector模板和deque模板实现以下简单的功能:
📖1.创建五名选手,放到vector中
📖2.遍历vector容器,取出来每一个选手,执行for循环,把10个评分存储到deque容器中
📖3.sort排序后去除最高分和最低分
📖4.deque容器遍历,累加总分
📖5.获取平均分:
代码实现:
#include<iostream>
#include<vector>
#include<deque>
#include<string>
#include<algorithm>
using namespace std;
class person
{
public:person(string name, int age){m_name = name;m_age = age;}string m_name;int m_age;int score;
};
void test01()
{//完成了创建选手vector<person> persons;for (int i = 0; i < 5; i++){string name;int age;cout << "请输入第"<<i+1<<"位参赛选手的姓名:";cin >> name;cout << "请输入第" << i + 1 << "位参赛选手的年龄:";cin >> age;person* p = new person (name,age);//开始录入分数deque<int>scroes;for (int i = 0; i < 10; i++){int nums = 0;cout << "请输入第" << i + 1 << "位裁判的分数:";cin >> nums;scroes.push_front(nums);}//排序后去除最高分和最低分sort(scroes.begin(), scroes.end());scroes.pop_front();scroes.pop_back();//计算平均值int sums = 0;for (deque<int>::iterator t1 = scroes.begin(); t1 != scroes.end(); t1++){sums = sums + *t1;}int arrage;arrage = sums / 3;p->score = arrage;persons.push_back(*p); }for (vector<person>::iterator t = persons.begin(); t != persons.end(); t++){cout << "选手姓名" << t->m_name << "选手年龄" << t->m_age << "选手分数" << t->score << endl;}
}
int main()
{test01();
}
🤔讲解:
这段代码使用C++创建了一个选手评分系统。首先,利用person
类创建了存储选手信息的vector
向量persons
,并使用用户输入的信息初始化了person
对象并将其存储到向量中。接下来,使用deque
双端队列记录了每位参赛选手10次裁判打分,并且去掉最高分和最低分,计算得出该选手的平均分数,将平均分数保存到对应的person
对象的score
成员变量中。最后,使用迭代器遍历persons
向量,输出所有选手的姓名、年龄、成绩。