1. 程式人生 > >C++標準庫與Java基礎類對照表

C++標準庫與Java基礎類對照表

一、集合類  物件的集合,指如連結串列,陣列,佇列這一類的資料結構。在C++標準庫中把這些成為Container, 在Java中稱為Collection。 C++STL常用Container: vector, list, map, set, queue, stack, priority_queue Java基礎類:ArrayList, HashMap, HashSet 注意: 在C++中採用了模板適應各種型別。Java中沒有模板,由於各個物件都是派生自Object類, 元素會自動向上轉換。Java的這種機制可能會引起一些非法的型別轉換,從而導致程式錯誤。當從Java的Collection取物件時,返回的是Object物件,因此需要程式設計師進行顯式的向下轉換。另外,Java的Collection不支援基本型別,解決辦法是利用基本包裝類(如Integer, Float, Double等)。 在JDK 5.0中加入了泛型型別,形式上有點像C++的模板,例如定義ArrayList<String> v, 這種的語法清晰地顯示了v是存放String的容器。Java的泛型程式設計超出本文範圍,請參閱相關資料。考慮到相容性的問題,本文對Collection的定義沒有采用泛型的形式。 vector與ArrayList
C++ Java
定義 vector<int> vTest(50) ArrayList vTest = new ArrayList()
追加 int x = 5; vTest.push_back( x ) Integer x = new Interger(5) vTest.add( x )
元素個數 vTest.size() vTest.size()
判斷空 vTest.empty() // TRUE為空 vTest.isEmpty()
插入 vector<int>::iterator iter; int y = 15;
iter = vTest.begin(); vTest.insert(iter+4, y)
int y = 15; vTest.add( 5, y)
刪除 vTest.erase( vTest.begin() ) vTest.remove(5)
迭代 vector<int>::iterator iter; iter = vTest.begin(); int xx = 0; while( iter != vTest.end() ) {  xx = *iter;  iter++; } iterator it = vTest.iterator(); //取得第一個
while( it.hasNext() ) {    Integer xx = (Integer) it.next();  //向下轉換 }
獲取 vTest[i]  vTest.at(i) 讀取 vTest.get(i) 寫入 vTest.set(i, new Integer(15));
清空 vTest.clear() vTest.clear()
list與LinkedList      雙向連結串列。 map與HashMap C++ STL中的map一般是用紅黑樹(RB-Tree)實現,Java的HashMap多用雜湊(hash)的方法實現。        Java的HashMap一般都要過載equals()和hashCode()方法 。
C++ Java
定義 map<string, int> mapTest HashMap mapTest = new HashMap()
插入 mapTest[ string(“hello”) ] = 1; 或者 typedef map<string,int>::value_type valType; string str = “hello”; mapTest.insert(valType(str, 1)); mapTest.put(“hello”, new Integer(1) );
查詢 mapTest.count(“hello”) 判斷個數 map<string,int>::iterator it; it = mapTest.find(“hello”); int x = (*it).second; 判斷存在:    mapTest.containsKey() 獲取 Integer x = (Integer)mapTest.get(“hello”)
二、演算法 下面講述的C++的泛型演算法只適用於隨機訪問的容器,如陣列,vector等。對List和Map不使用。List有自己一套演算法方法。
C++ Java
定義 vector<string> vec; //假設已插入資料 vector<string>::iterator it; ArrayList vec = new ArrayList(); //假設已插入資料 Iterator it = vec.iterator();
排序 sort(vec.begin(), vec.end()) Collections.sort(vec);
查詢 find(vec.begin(), vec.end(), “hello”) 二分查詢: int pos = Collections.binarySearch(vec, “hello”);
複製 int ia[] = {1,2,3,4,5} vector<int> vec; copy(ia, ia+5, back_inserter(vec));
三、字串     C++採用string類,Java採用String類。java的String類一經初始化就不能改變,每次增加或刪除字元時會構建一個新的String類,在頻繁改變操作中會大量記憶體耗費。可變的String應採用StringBuffer類。
C++ Java
定義 string str = “cpp string”; string str(“hello”); 轉換為C風格字串 str.c_str(); String str = “java string”
追加 str = str + “world”; str.append(“world”); str = “hello” + “world”; str.concat(“world”);
長度 str.length() str.length();
比較 str.compare(otherstr); 判斷相等 str == otherstr str.CompareTo(otherstr); 判斷相等: str.equals(otherstr); 正則表示式匹配 str.matches(“^#(.)+$”);
子串 str.substr(5,6) //5個字元,長度6 str.substring(5,8) //5到第8個字元 分割: String str = “CHN,JPN,RUS”; String vecstr[]; vecstr = str.split(“,”); 結果為String陣列 “CHN”, “JPN”, “RUS”
查詢 int idx = str.find(“cpp”); if( idx != string::npos ) {  ... ... //找到位置 } 查詢第一個出現0~9字元的位置 int idx = find_first_of(str, “1234567890”); int idx = str.indexOf(“cpp”); if( idx != -1) {  .. ... }
清空 str.clear() str.clear()

相關推薦

C++標準Java基礎對照表

一、集合類  物件的集合,指如連結串列,陣列,佇列這一類的資料結構。在C++標準庫中把這些成為Container, 在Java中稱為Collection。 C++STL常用Container: vector, list, map, set, queue, stack

c/c++ 標準 set 自定義關鍵字比較函數

尖括號 ios template end 傳遞函數 使用 out 例子 比較 標準庫 set 自定義關鍵字類型與比較函數 問題:哪些類型可以作為標準庫set的關鍵字類型呢??? 答案: 1,任意類型,但是需要額外提供能夠比較這種類型的比較函數。 2,這種類型實現了 &l

java 基礎之 SQLFun

cnblogs import bsp 轉換 span pre param ack urn package com.exjor.webdemo; import java.sql.Timestamp; import java.util.Date; public

java 基礎之 FormatFun

final mat web port efault div break orm log package com.exjor.webdemo; import java.text.SimpleDateFormat; import java.util.Date;

java核心學習(九) java基礎之Scanner

system.in 網站 文檔 數據源 java程序 官方網站 基本功 簡單 方法 從第九節開始,對java的基礎類庫進行初步學習,這些基礎類其中的一些內容是java程序員的基本功 言歸正傳,開始學習。對於java類庫的具體使用方法,可以在IDE裏面查看源碼和註釋,也可以在

C++標準vector型的使用和操作總結

種類 style 開始 spa log string string類 gpo targe   vector是一種類型對象的集合,它是一種順序容器,容器中的所有對象必須都是同一種類型。vector的對象是可以動態生長的,這說明它在初始化時可以不用指定大小,而是再使用時根據元素

Java基礎-加載機制自定義Java加載器(ClassLoader)

定義類 方式 blog 之前 www 筆記 通過 反射 加載機制          Java基礎-類加載機制與自定義類Java類加載器(ClassLoader)                                     作者:尹正傑 版權聲明:原創作品,謝絕轉

java基礎學習(四.2)異常處理的陷阱

前言 java的異常類Exception繼承自非正常情況類Throwable,異常類下又分為兩大類:checked異常和runtime異常, 其中發生checked異常的類如果不做處理程式會發生編譯錯誤,導致程式中斷編譯 而runtime異常的類只有在執行階段才會發生,如果不做處理,

java基礎學習(二.3)List子介面的實現

List子介面的實現類:ArrayList/Vector/LinkedList List集合:元素有序。可重複的集合,List集合預設按元素的新增順序設定元素的索引,通過索引來訪問物件 List集合原始碼? public interface List<E> extends

java基礎學習(二.2)Set子介面的實現

Set子介面的實現類:HashSet/LinkedHashSet/TreeSet/EnumSet/SortedSet Set子介面和Collection父介面原始碼對比? 1Collection父介面原始碼   public interface Collection&l

java基礎學習(七.3)控制執行緒

前言 執行緒的五個狀態新建/就緒/執行/阻塞/死亡 為了很好的控制執行緒的狀態(新建態,就緒態--執行態控制不了),我們來看一下執行緒物件的幾個方法,也就是Thread的幾個方法 控制執行緒的狀態 1使執行緒處於新建態 執行緒子類 a=new 執行緒子類();  

java基礎學習(七.2)執行緒的生命週期

前言 利用java的類/介面建立好使用者執行緒後,我們呼叫執行緒物件的啟動方法,讓執行緒啟動 執行緒的生命週期:新建new 就緒runnable 執行running 阻塞blocked 死亡die 執行緒會在幾種狀態之間改變 新建new 執行緒類通過繼承Thread實現Run

java基礎學習(六.6)物件序列化

前言 物件序列化:允許把記憶體中的物件轉換成平臺無關的二進位制流,從而把這種二進位制流持久的儲存自磁碟上,通過網路將這種二進位制流傳輸到網路的另一個節點,其他程式一旦獲得了這種二進位制流,都可以將這種二進位制流恢復成原來的java物件 物件的序列化是指將一個java物件寫入io流中,

java基礎學習(六.5)輸入輸出流體系

前言 輸入輸出流的4個抽象基類InputStream/OutputStream  Reader/Writer 4個訪問檔案的節點流:FileInputStream/FileReader  FileOutputStream/FileWriter 處理流的用法:

java基礎學習(六.3)位元組流 字元流(輸入輸出)

前言: 位元組流和字元流的操作方式幾乎相同,區別只是操作的資料單元不同而已 位元組流操作的資料單元是位元組8位,字元流操作的資料單元是字元16位 輸入流 字元輸入流/位元組輸入流原始碼(輸入流的抽象基類) InputStream public abstract class

java基礎學習(六.2)輸入輸出 I/O流

前言 java的IO通過java.io包下的類和介面來支援,包括輸入輸出兩種流,每種流又分為位元組流和字元流, 輸入輸出流:位元組流和字元流 位元組流:以位元組為單位處理輸入輸出 字元流:以字元來處理輸入輸出 java7對原有io進行升級,提供了一系列全新的API放在NIO中

java基礎學習Annotation

前言: jdk5開始,java提供了註解的支援 Annotation:是程式碼裡的特殊標記,這些標記可以在編譯/類載入/執行時被讀取,並執行相應的處理 而基本的註釋程式只在編譯的時處理 Annotation可以修飾什麼? 可以修飾包/類/構造器/方法/成員變數/引數/區域性變

Java基礎(下)

Java基礎類庫(下) System類 System類代表當前Java程式的執行平臺,程式不能建立System類的物件,System類提供了一些變數和類的方法,允許通過System類來呼叫這些方法。 System類提供了代表標準輸入、標準輸出、錯誤輸出的類變數: System.i

Java基礎(上)

Java基礎類庫(上) Java提供了豐富的基礎類庫,Java 8提供了4000多個基礎類,這些類可以幫我們降低開發難度,提高開發效率。但是這些基礎類並不需要我們去背,我們只需要在平常的使用中去反覆的查閱API文件,就可以記住大部分功能,下面介紹幾個在Java中常用的基礎類,來了解並

Java基礎

一、StringBuffer類 在講解StringBuffer類之前先來回顧一下String類特點: 一個字串常量就是String類的匿名物件; String類物件有兩種例項化方式:      |- 方式一:直接賦值,可以自動入池,只開闢一塊記憶體空間;