首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++和Java中STL库入门

://me.csdn.net/m0_43448982 STL简介 STL简称标准模版库,被容纳在C++标准程序库,包含了许多基本数据结构和基本算法,使程序员写起来得心应手。...为什么使用STL 在学习数据结构的时候,在程序中会使用到堆、栈、队列、链表等一些基本的算法,而学习数据结构的时候,这些基本算法写起来十分繁琐,如果不想写这些,那么就可以考虑一下STL了。...pair: 1.需要头文件#include 2.表示一组键对(有两个变量的结构体) pairint, string> p; p.first = 1; p.second = "abc";...从小到大 // 如果first相同则second从小到大 pair与其他结构嵌套 vectorpairint, string> > vp; queuepairint> > qp;...queuepairpairint, int>, int> > qpp; set: 1.需要头文件#include; 2.set保存了不可重复的元素–二叉搜索树-红黑树 setint

1.3K50

矩阵归零先找为零的位置,再分别置零

记录位置的时候可以用vectorpairint,int>>来一组一组来记录,这样是最直观的。我一开始的程序也是这么写的,没有什么问题。...后来发现,如果某一行或者某一列出现多个0的话,上面的方法没有避免重复,可能在前面的操作中都已经清零过了,所以想到可以吧row和col分别用一个set来记录,顺便去重,然后分别遍历两个set,这样就可以保证不做重复的事情...两个版本的程序我都保留贴在下面: /* //使用pair的主程序 void setZeroes(vectorint>> &matrix) { vector...pairint,int>> ZerosPos; for(int i=0;i<matrix.size();i++) { for(int j=0;...mat[i][col]=0; //这一列置零,因为在不同的vectorint>中,所以只能这么一个一个做。

65110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【代码随想录】二刷-栈和队列

    有效的括号 方法一 这个方法写法有点乱,判断是否可以组成一个完整的一组括号,最后判断栈是否为空,为空则说明全部匹配成功。...注意括号是一层一层包含的。例如:“{[]()}。所以”[(])"为括号的非法包含。...注意括号是一层一层包含的。例如:“{[]()}。所以”[(])"为括号的非法包含。...删除字符串中的所有相邻重复项 栈的简单使用 补充: 递归的实现就是: 每一次调用递归都会把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时候,从栈顶弹出上一次的各项参数,所以这就是为什么递归可以返回上一层位置的原因...小插曲: 结果让返回前k个出现的高频元素,我开始还理解错了,以为是跟上面那个题似的,维护一个k个的窗口, 每次保存窗口内出现频率最高的元素~。

    20710

    你真的会做 2 Sum 吗?

    我在之前的刷题视频里说过,大家刷题一定要吃透一类题,为什么有的人题目做着越来越少,有的人总觉得刷不完的题,就是因为没有分类吃透。...方法一 在我多年前还不知道时空复杂度的时候,我想这还不简单嘛,就每个组合挨个试一遍呗,也就是两层循环。...方法二 那在我学了 HashMap 这个数据结构之后呢,我又有了新的想法。...拓展 这是最基本的 2 Sum 问题,这个题可以有太多的变种了: 如果这个数组里有不止一组结果,要求返回所有组合,该怎么做? 如果这个数组里有重复元素,又该怎么做?...] 并没有区别,所以我们要限制第二组的两个数要在第一组的两个数之后哦。

    38330

    【c++丨STL】mapmultimap的使用

    前言 之前我们学习了STL关联式容器——set/multiset的使用,本篇文章我们将介绍另一组关联式容器map(映射表)/multimap(多重映射表)。...因为map中元素的键是唯一的,所以插入操作会检查每个被插入元素的键是否与容器中已经存在的元素的键相等,如果相等,则不插入该元素,并返回包含重复键的元素的迭代器(如果该重载函数有返回值)。...这里介绍一下第一个重载函数(单个元素插入)的返回值:是一个pair,当插入成功时,pair的第一个元素是指向新元素的迭代器,第二个元素是true;当因有重复键而插入失败时,pair的第一个元素是指向包含重复键的元素的迭代器..., int> m; mapint, int> m2({ {3,3},{4,4} }); //单个元素插入 m.insert({ 1,1 }); m.insert(make_pair(2, 2...八、map的具体使用 接下来我们使用map来解决一个具体问题:有一个字符串数组,其中包含各种水果的名称,统计每种水果的出现次数。

    10210

    【笔记】《C++Primer》—— 第11章:关联容器

    标准库中的关联容器分为无序集合和有序集合,集合中分为map和set,然后map和set都有允许重复关键字的版本,具体如下: ?...进行列表初始化的时候要注意map需要采用内部花括号进行pair的构造 // map的列表构造 mapint, string > test= { {1, "A"}, { 2,"B" }}; 使用有序容器时...当使用makepair时,pair的类型是编译器推断的 11.3 关联容器操作 关联容器有一组表示出容器类型的成员如下,我们用域运算符来得到容器相应的类型成员。...const的,因此set的迭代器是const的 但是与顺序容器一样我们可以用begin和end得到关联容器想要的迭代器 我们通常不对关联容器使用泛型算法,因为容器的迭代器常常包含了const成分难以被需要修改元素的算法处理...find即可,但是如果是可重复元素的容器,则关联容器有三种方法处理。

    54320

    离散实验 判断集合之间是单射,满射还是双射

    大家好,又见面了,我是你们的朋友全栈君。...由单射定义可以知道,当我们的x中的元素大于y中的元素时一定不满足我们的单射,然后我们按照x中的元素个数进行遍历将y中的元素与之对应,这个我们使用到pairint,int> p(src[i],dst[i...]); ,pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,其中我们的map就是将key和value放在一起来保存。...[src[i]]=dst[i]; } } return bijection; } 1.1 判断是否是单射 思路: 在判断一组映射关系是否是单射时,我们主要去判断x中的元素在y中都有与之对应的,...,能实现这个想法主要是map函数它有两个参数,一个是key,一个是value值,注:key值不能有重复的,有重复的会自动将其删除一个,但是value值可以有重复的,这让标记可以实现。

    94620

    走迷宫(BFS)

    走迷宫 给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。...接下来 n 行,每行包含 m 个整数(0 或 1),表示完整的二维数组迷宫。 输出格式 输出一个整数,表示从左上角移动至右下角的最少移动次数。...} bfs(); } } 每天一道算法题 最长连续不重复子序列 给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。...输入格式 第一行包含整数 n。 第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。 输出格式 共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。...while(s[a[i]] > 1) // 一点碰见两个重复的元素后 { s[a[j]] --; // 这里要主要的一点是这个算法是没有回溯的

    7400

    6.1 C++ STL 序列映射容器

    Map/Multimap 映射容器属于关联容器,它的每个键对应着每个值,容器的数据结构同样采用红黑树进行管理,插入的键不允许重复,但值是可以重复的,如果使用Multimap声明映射容器,则同样可以插入相同的键值...set是一个用来存储不重复元素的集合,其内部自动对元素进行排序,具体排序方式由元素类型的比较函数定义。 代码中首先创建了两个pair对象p和p2,分别用string和int类型的值进行初始化。...由于set中不能存在重复的元素,所以在插入元素10时,因为之前已经插入过10,所以插入失败,返回了一个pair对象,其中second为false,表示插入失败。...,如果出现重复的则报错 setint> var; var.insert(10); // 由于插入过10这个元素,所以在此插入则会报错 pairint>::iterator, bool...这段代码实现了使用STL库中的map类型来存储一组键值对,其中键是字符串类型,值是整数类型。

    20350

    Golang中的map类型都在哪些场景下使用

    在golang中也有切片和数组这样的数据类型,来存储一组数据。 数组就好比PHP中的一维数组,并且长度是固定的,其中的值类型在定义数组的时候就确定好了。 切片是一种特殊的数组类型。长度是固定的。...slice := []int{1, 2, 3, 4} 有数组和切片可以存储一组数据,那为什么还有map这样的类型结构呢?map类型具体是啥样的呢?...我们完全不知道1、12这样的值是用户的什么信息,男、张三我们还可以猜测一下是名字和性别。 b. 重复代码。一个用户一个变量,如果存在千万个用户,我们岂不是需要定义千万个变量。 c. 繁琐。...map map定义 map 是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是 key,对应的另一个元素是 value,所以这个结构也称为关联数组或字典。...示例小案例,我们用map存储一个用户的信息。用户信息包含ID,name,age字段。

    1.3K30

    6.1 C++ STL 序列映射容器

    Map/Multimap 映射容器属于关联容器,它的每个键对应着每个值,容器的数据结构同样采用红黑树进行管理,插入的键不允许重复,但值是可以重复的,如果使用Multimap声明映射容器,则同样可以插入相同的键值...set是一个用来存储不重复元素的集合,其内部自动对元素进行排序,具体排序方式由元素类型的比较函数定义。代码中首先创建了两个pair对象p和p2,分别用string和int类型的值进行初始化。...由于set中不能存在重复的元素,所以在插入元素10时,因为之前已经插入过10,所以插入失败,返回了一个pair对象,其中second为false,表示插入失败。最后程序暂停等待用户操作,防止程序退出。...,如果出现重复的则报错 setint> var; var.insert(10); // 由于插入过10这个元素,所以在此插入则会报错 pairint>::iterator, bool...STL库中的map类型来存储一组键值对,其中键是字符串类型,值是整数类型。

    18720
    领券