2017huas_ACM第三天
暑假集训第三天。
就在刚才AC了第十题,本周做题拿到了满分。
软件工程专业没有学习C++语言,这在做题过程中给了我不少的麻烦。遇到什么不懂的,不确认的,都要上网查阅或者开了新项目自己尝试一下。耗费了不少时间,也走了不少弯路。
用C++已经三天了,因为是做ACM的关系,逻辑都是面向过程的,总的感觉和C语言的区别并不大。
C++的STL提供了很多现成的模板,合理利用这些模板是我现在要攻克的课题。
queue、stack、map、set、vector。这些数据结构什么时候用,怎么用,怎么去选择他们。
经过几天的使用我对他们也有了一些初步的见解:
queue:先入先出,但我一般使用的是其变种优先队列(priority_queue<int>和priority_queue<int,vector<int>,greater<int> >),这两个队列分别可以优先取出最大元素和最小元素。可以猜测其对自定义变量也可使用,只需要重置运算符或做类似前提准备,同时其应该还有更多的优先条件可以选择或自定义。
优先队列给我的感觉像一个随时在用Linq排序的List<>,其push()的方法对应add()等......但我每次只能读取其表头元素内容,对于能否使用索引器[]来访问其他位置的元素暂时还未尝试过。
stack:先入后出,在一些特殊情况时意外的很好用,虽然要达成这个目的逻辑很简单,要手写也能很快写出来,但stack得便捷在于拥有许多定义好了的方法,在需求时可以直接使用而不用再自己定义。
栈和队列很相近,所以在选择时需要思维很清晰,知道自己接下来要写的逻辑是什么,盲目的使用可能会导致选择错误最后需要大规模重构更或是推翻了重写。
map:曾尝试使用过,但没有成功。给我的感觉有点像字典,都是键值对通过key找vale。但两者可用的方法是否相同还有待考证。
在我觉得我需要使用字典时我会考虑使用map。
set:每个元素只会出现一次,使用次数不多,主要使用其方法count()。通常使用时与其他数据结构同步储存(如计算丑数)。
集合给我的感觉像一个可以快速查询数据结构中所有元素的方法(集合中的count()方法),目前每次使用集合都是为了避免在其他数据结构中储存时出现相同元素的现象,故若其他数据结构有count()方法时我将不会使用集合。感觉集合存在的意义不仅仅只有这个,其他意义还等待我的挖掘。
vector:不定长数组,常常代替数组来使用,其拥有的众多方法让我更愿意选择其而非不能点不出方法的数组。
给我的感觉有点像List<>,但又不同于List<>,很常用的一个数据结构。
......
恩,快中午了,吃饭去~
2017huas_ACM第三天的更多相关文章
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- Jquery的点击事件,三句代码完成全选事件
先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 简谈百度坐标反转至WGS84的三种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 基于百度地图进行数据展示是目前项目中常见场景,但是因为百度地图 ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域
一.前言 结合我们本次系列的第一篇博文中提到的上下文映射图(传送门:如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念),得知我们这个电商网站的核心域就是销售子域.因为电子商务是以信息网络 ...
- 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
之前一篇里写过字符串常用类的三种方式<java中的字符串相关知识整理>,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简 ...
随机推荐
- Fibonacci数的后9位
import java.math.*; import java.util.*; public class Main{ /** * @param args */ public static void m ...
- 1.ARC模式下如何兼容非ARC的类
ARC模式下如何兼容非ARC的类 :转变为ARC的, -f-objc-arc 非ARC模式下如何兼容ARC的类 :转变为非ARC -fno-objc-arc
- Python3列表、元组、字典、集合的方法
一.列表 温馨提示:对图片点右键——在新标签页中打开图片: 1.count() 定义:统计指定元素在列表中出现的次数并返回这个数.若指定的元素不存在则返回:0. 格式:[列表].count(“指定元素 ...
- Hibernate关联映射(多对一 --- many-to-one)
转自:https://blog.csdn.net/fengxuezhiye/article/details/7369786?utm_source=blogxgwz9 Hibernate的关联映射关系有 ...
- ChartCtrl源码剖析之——CChartAxisLabel类
CChartAxisLabel类用来绘制轴标签,上.下.左.右都可以根据实际需要设置对应的轴标签.它处于该控件的区域,如下图所示: CChartAxisLabel类的头文件. #if !defined ...
- asp.net web.config配置节说明(转发)
原文地址:http://www.cnblogs.com/qingyuan/articles/1501644.html web.config 文件查找规则: (1)如果在当前页面所在目录下存在 ...
- 使用node.js在sublime text3搭建服务器
问题描述: 使用node.js在sublime text3中搭建好服务器后,第一次使用“ctrl+b”运行服务器没有问题,如图所示 如果想对test.js中的内容做些许修改,保存后再使用“ctrl+b ...
- bzoj 4813: [Cqoi2017]小Q的棋盘【树形dp】
这么简单的dp我怎么没想到x2 f为从这个点出发后回到这个点最多能走过的点,g为从这个点出发后不回到这个点最多能走过的点,注意g有两种转移:g[u][k]=max(g[u][k],f[u][k-j-1 ...
- bzoj 2257[Jsoi2009]瓶子和燃料 数论/裴蜀定理
题目 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy 的飞船上共有 N个瓶子(1< ...
- ————————C语言中快速排序方法——————————————
在对浮点型排序是一定要用三木运算符(三目运算符内容下去自己看),因为如果也是用整形那样的减法的时候如果是两个十分相近的数字 可能返回一个小数(自己一会去试试),冉冉他cmp返回值是int(试试别的)因 ...