java类比C++的STL库详解

 更新时间:2023年08月18日 10:00:16   作者:依嘫_吃代码  
这篇文章主要介绍了java类比C++的STL库详解,标准模板库,是C++标准库的重要组成部分,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,STL 是一些容器、算法和其他一些组件的集合,需要的朋友可以参考下

java类比C++的STL库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

常见容器操作

1.vector 和 ArrayList

vector<int> a; - ArrayList<Integer> a = new ArrayList<>();
size() - size()  // 返回元素个数
empty() - isEmpty()  // 返回是否为空
clear() - clear  // 清空
front()/back() - get(0)/get(a.size() - 1)
push_back()/pop_back() - add()/remove(a.size() - 1)
begin()/end() - iterator()
[] - get()
支持比较运算 - 不支持比较运算
ArrayList 的遍历:
for (int i = 0; i < a.size(); i++) a.get(i);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) iterator.next()
for (int num : a) num;

2.pair 和 Pair

Java 需要 import javafx.util.Pair ,目前 acwing 不支持

pair<int, int> p = make_pair(1, 2); - Pair<Integer, Integer> p = new Pair<>(1, 2); 
first - getKey() // 第一个元素
second - getValue() // 第二个元素
支持比较运算 - 不支持比较运算

3.string 和 String

string a = "yxc"; - String b = "hqh";
size()/length() - length()  // 返回字符串长度
empty()
clear()
substr(起始下标,(子串长度)) - substring(起始下标,(终止下标 + 1)) // 返回子串
c_str()  // 返回字符串所在字符数组的起始地址
支持加法运算 - 支持加法运算

4.queue, stack, deque 和 Deque

有两个实现类,一般使用 ArrayDeque

queue, 队列
   size() - size()
   empty() - isEmpty()
   push() - offer()  // 向队尾插入一个元素
   front() - peek()  // 返回队头元素
   back()  // 返回队尾元素
   pop() - poll()  // 弹出队头元素
stack, 栈
   size() - size()
   empty() - isEmpty()
   push() - push()  // 向栈顶插入一个元素
   top() - peek()  // 返回栈顶元素
   pop() - pop()  // 弹出栈顶元素
deque, 双端队列
   size() - size()
   empty() - isEmpty()
   clear() - clear()
   front()/back() - getFirst()/getLast()
   push_back()/pop_back() - offerLast()/pollLast()
   push_front()/pop_front() - offerFirst()/pollFirst()
   begin()/end() - iterator()
   []

5.priority_queue 和 PriorityQueue

默认是大根堆 - 默认是小根堆
push() - offer()  // 插入一个元素
top() - peek()  // 返回堆顶元素
pop() - poll() // 弹出堆顶元素
PriorityQueue 定义成大根堆的方式:
PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2) -> o2 - o1);

6.unordered_set 和 HashSet

size() - size()
empty() - isEmpty()
clear() - clear()
insert() - add  // 插入一个数
find() - contains()  // 查找一个数
erase() - remove() // 删除元素

7.unordered_map 和 HashMap

size() - size()
empty() - isEmpty()
clear() - clear()
insert() - put() // 插入的数是一个 pair
find() - get(key) // 查找一个 pair
erase() - remove() // 删除元素
    - containsKey(key)/containsValue(value) // 判断元素是否在集合中
    - entrySet() // 返回一个包含所有节点的集合
    - keySet() // 返回一个包含所有键的集合
    - values() // 返回一个包含所有值的集合
    - getOrDefault(key, default value) // 返回指定 key 的 value,若 key 不存在 则返回 default value
    - putIfAbsent(key, value) // 如果集合中没有该 key 对应的节点,则插入

到此这篇关于java类比C++的STL库详解的文章就介绍到这了,更多相关java类比STL库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Redisson可重入锁解锁逻辑详细讲解

    Redisson可重入锁解锁逻辑详细讲解

    Redisson开源框架是一个Redis的分布式锁的现成实现方案,是Redis的java实现的客户端。通过Netty支持非阻塞I/O。Redisson实现了分布式锁的自动续期机制、锁的互斥自等待机制、锁的可重入加锁与释放锁的机制
    2023-02-02
  • 详解Spring中的FactoryBean

    详解Spring中的FactoryBean

    本篇文章主要介绍了Spring中的FactoryBean,如果一个bean的创建过程中涉及到很多其他的bean 和复杂的逻辑,用xml配置比较困难,这时可以考虑用FactoryBean
    2017-04-04
  • 解决使用@ResponseBody后返回500错误的问题

    解决使用@ResponseBody后返回500错误的问题

    这篇文章主要介绍了解决使用@ResponseBody后返回500错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • TC 集群Seata1.6高可用架构源码解析

    TC 集群Seata1.6高可用架构源码解析

    这篇文章主要为大家介绍了TC 集群Seata1.6高可用架构源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Java字符串替换的三种方法实际应用

    Java字符串替换的三种方法实际应用

    这篇文章主要给大家介绍了关于Java字符串替换的三种方法,replace和replaceAll是JAVA中常用的替换字符的方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • idea2017建立jsp工程及tomcat配置教程

    idea2017建立jsp工程及tomcat配置教程

    本文通过图文并茂的形式给大家介绍了idea2017建立jsp工程及tomcat等配置的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • javz笔记之:有趣的静态方法的使用

    javz笔记之:有趣的静态方法的使用

    本篇文章介绍了,java中静态方法的使用介绍,需要的朋友参考下
    2013-04-04
  • 一篇文章教你使用枚举来实现java单例模式

    一篇文章教你使用枚举来实现java单例模式

    本篇文章主要介绍了Java实现单例的3种普遍的模式,饿汉式、懒汉式、枚举式。具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助
    2021-07-07
  • 关于springboot中nacos动态路由的配置

    关于springboot中nacos动态路由的配置

    这篇文章主要介绍了springboot中nacos动态路由的配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java与Spring boot后端项目Bug超全总结

    Java与Spring boot后端项目Bug超全总结

    Spring Boot是一个开源的 Java 开发框架,它的目的是简化Spring应用程序的开发和部署,下面这篇文章主要给大家介绍了关于Java与Spring boot后端项目Bug的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06

最新评论