java類比C++的STL庫詳解
java類比C++的STL庫
常見容器操作
1.vector 和 ArrayList
vector<int> a; - ArrayList<Integer> a = new ArrayList<>(); size() - size() // 返回元素個(gè)數(shù) 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() 支持比較運(yùn)算 - 不支持比較運(yùn)算 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() // 第一個(gè)元素 second - getValue() // 第二個(gè)元素 支持比較運(yùn)算 - 不支持比較運(yùn)算
3.string 和 String
string a = "yxc"; - String b = "hqh"; size()/length() - length() // 返回字符串長(zhǎng)度 empty() clear() substr(起始下標(biāo),(子串長(zhǎng)度)) - substring(起始下標(biāo),(終止下標(biāo) + 1)) // 返回子串 c_str() // 返回字符串所在字符數(shù)組的起始地址 支持加法運(yùn)算 - 支持加法運(yùn)算
4.queue, stack, deque 和 Deque
有兩個(gè)實(shí)現(xiàn)類,一般使用 ArrayDeque
queue, 隊(duì)列 size() - size() empty() - isEmpty() push() - offer() // 向隊(duì)尾插入一個(gè)元素 front() - peek() // 返回隊(duì)頭元素 back() // 返回隊(duì)尾元素 pop() - poll() // 彈出隊(duì)頭元素 stack, 棧 size() - size() empty() - isEmpty() push() - push() // 向棧頂插入一個(gè)元素 top() - peek() // 返回棧頂元素 pop() - pop() // 彈出棧頂元素 deque, 雙端隊(duì)列 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
默認(rèn)是大根堆 - 默認(rèn)是小根堆 push() - offer() // 插入一個(gè)元素 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 // 插入一個(gè)數(shù) find() - contains() // 查找一個(gè)數(shù) erase() - remove() // 刪除元素
7.unordered_map 和 HashMap
size() - size() empty() - isEmpty() clear() - clear() insert() - put() // 插入的數(shù)是一個(gè) pair find() - get(key) // 查找一個(gè) pair erase() - remove() // 刪除元素 - containsKey(key)/containsValue(value) // 判斷元素是否在集合中 - entrySet() // 返回一個(gè)包含所有節(jié)點(diǎn)的集合 - keySet() // 返回一個(gè)包含所有鍵的集合 - values() // 返回一個(gè)包含所有值的集合 - getOrDefault(key, default value) // 返回指定 key 的 value,若 key 不存在 則返回 default value - putIfAbsent(key, value) // 如果集合中沒有該 key 對(duì)應(yīng)的節(jié)點(diǎn),則插入
到此這篇關(guān)于java類比C++的STL庫詳解的文章就介紹到這了,更多相關(guān)java類比STL庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java使用BouncyCastle加密
- java:程序包org.bouncycastle.jce.provider不存在問題及解決
- Java的JSTL標(biāo)簽庫詳解
- Java通用BouncyCastle實(shí)現(xiàn)的DES3加密的方法
- 詳解javaweb中jstl如何循環(huán)List中的Map數(shù)據(jù)
- JavaWeb開發(fā)之JSTL標(biāo)簽庫的使用、 自定義EL函數(shù)、自定義標(biāo)簽(帶屬性的、帶標(biāo)簽體的)
- 在JSTL EL中處理java.util.Map,及嵌套List的情況
- Java實(shí)現(xiàn)STL中的全排列函數(shù)next_permutation()
相關(guān)文章
java中Memcached的使用實(shí)例(包括與Spring整合)
這篇文章主要介紹了java中Memcached的使用實(shí)例(包括與Spring整合),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java 對(duì) Cookie增刪改查的實(shí)現(xiàn)示例
這篇文章主要介紹了Java 對(duì) Cookie增刪改查的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05java實(shí)現(xiàn)從方法返回多個(gè)值功能示例
這篇文章主要介紹了java實(shí)現(xiàn)從方法返回多個(gè)值功能,結(jié)合實(shí)例形式分析了集合類、封裝對(duì)象、引用傳遞三種實(shí)現(xiàn)方法,需要的朋友可以參考下2017-10-10java網(wǎng)絡(luò)通信技術(shù)之簡(jiǎn)單聊天小程序
這篇文章主要為大家詳細(xì)介紹了java網(wǎng)絡(luò)通信技術(shù)之簡(jiǎn)單聊天小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07SpringBoot實(shí)現(xiàn)基于URL和IP的訪問頻率限制
在現(xiàn)代?Web?應(yīng)用中,接口被惡意刷新或暴力請(qǐng)求是一種常見的攻擊手段,為了保護(hù)系統(tǒng)資源,需要對(duì)接口的訪問頻率進(jìn)行限制,下面我們就來看看如何使用?Spring?Boot?實(shí)現(xiàn)基于?URL?和?IP?的訪問頻率限制吧2025-01-01java Map轉(zhuǎn)Object與Object轉(zhuǎn)Map實(shí)現(xiàn)代碼
這篇文章主要介紹了 java Map轉(zhuǎn)Object與Object轉(zhuǎn)Map實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02springboot做代理分發(fā)服務(wù)+代理鑒權(quán)的實(shí)現(xiàn)過程
這篇文章主要介紹了springboot做代理分發(fā)服務(wù)+代理鑒權(quán)的實(shí)現(xiàn)過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01springmvc使用REST出現(xiàn):Request?method?'PUT'?not?sup
這篇文章主要介紹了springmvc使用REST出現(xiàn):Request?method?'PUT'?not?supported問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02