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