C++ vector模板和deque的简单应用

这篇具有很好参考价值的文章主要介绍了C++ vector模板和deque的简单应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

🤔vector模板和deque的简单介绍:

🤔vector和deque的主要不同之处:

🤔今天我们用vector模板和deque模板实现以下简单的功能:

代码实现:

🤔讲解:


🤔vector模板和deque的简单介绍:

vectordeque都是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向量,输出所有选手的姓名、年龄、成绩。文章来源地址https://www.toymoban.com/news/detail-466562.html

到了这里,关于C++ vector模板和deque的简单应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++中vector、list和deque的选择:什么时候使用它们?

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在C++中,vector、list和deque是STL(标准模板库)提供的三种常见的容器。每种容器都有其特点和适用场景。本文将详

    2024年02月13日
    浏览(30)
  • 【C++】deque的实现原理简单介绍

    前言 deque被称为双端队列,它的出现主要是为了结合 vector 和 list 的优点并减小它们的缺点,实际上 deque 确实结合了 vector 和 list 的优点减小了它们的缺点,但是它的结合也让它自己的优点没有原始的 vector 和 list 那么极致,导致 deque 变得很中庸,所以 deque 的应用场景也并没

    2024年02月01日
    浏览(33)
  • C++ 命名空间 & vector & 模板

             为了区分不同库中相同名称的函数、类、变量等,引入概念:命名空间。它可作为附加信息来帮助区分它们。使用了命名空间即定义了上下文,本质上就是定义了一个范围。                   命名空间的定义使用  namespace ,后跟命名空间的名称,如下所

    2024年02月09日
    浏览(32)
  • vector VS deque

    vector与动态数组相同,能够在插入或删除元素时自动调整自身大小,其存储由容器自动处理, vector 通常占用多于静态数组的空间,因为要分配更多的内存以管理将来的增长,在每次插入元素的时,仅当额外内存耗尽时触发重新分配。 如上图所示, vector 元素放置在连续存储

    2024年02月11日
    浏览(78)
  • c++ 11标准模板(STL) std::vector (二)

    template     class T,     class Allocator = std::allocatorT class vector; (1) namespace pmr {     template class T     using vector = std::vectorT, std::pmr::polymorphic_allocatorT; } (2) (C++17 起) 1) std::vector 是封装动态数组的顺序容器。 2) std::pmr::vector 是使用多态分配器的模板别名。 元素相继存储,这意味着不

    2024年02月02日
    浏览(40)
  • C++学习笔记之四(标准库、标准模板库、vector类)

    C + + C++ C + + 标准库指的是标准程序库( S t a n d a r d Standard St an d a r d L i b a r a y Libaray L iba r a y ),它定义了十个大类,其中包括我们比较熟悉的 i o s t r e a m , s t r i n g iostream, string i os t re am , s t r in g 都是这十个大类的其中一个类中的一个小类。而 c + + c++ c + + 的标准模板库也

    2024年02月07日
    浏览(28)
  • C++的vector类的简单实现

    下面代码是有关于 vector 的一些基础实现,和库里的函数可能有较大的不同,但是基本可以实现 vector 的很多功能。

    2024年02月11日
    浏览(27)
  • 【C++】vector模拟实现及其应用

    vector是表示可变大小数组的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。 本质讲,vector使用动态分

    2023年04月25日
    浏览(32)
  • Rust实战(4):防御简单C++ vector容器的越界问题例子分析

    这是一个C++的简单vector容器的越界问题的小例子: func1.h func1.cpp 上面的代码是刻意制造出来的,用一个测试代码说明问题: 程序输出: 这个代码在Mac OS 系统上 make 后运行没有崩溃,但是测试代码里 std::string ret2 = sv.getElement(11); 实际上发生了数组越界。 在rust环境下创建一个

    2024年02月16日
    浏览(38)
  • 18 标准模板库STL之deque

    基础知识         1、deque是一个双端数组容器,可以同时在头部和尾部添加、移除元素。deque与vector类似,也支持随机访问,但vector是一整段的连续内存空间,而deque是一段一段的连续内存空间。每一段连续内存空间称为一个deque块,所有deque块由一个map进行管理。     

    2023年04月22日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包