首先說明, c# 中的引用
即為c++中的指標。
值型別:內建資料型別,自定義的struct,不包括string。它們分配在棧上,超出作用域自動銷毀。
引用型別:自定義class或陣列的例項以及string為引用型別,它們有乙個引用(指標)指向它們。由gc負責**。
裝箱:將值型別轉換為引用型別的過程稱為裝箱
int i = 67; // i is a value type
object o = i;
以上**會在堆上建立乙個i;
類似於c++中的&
引用,減少傳值時的效能消耗,主要用在struct上。但是c#中不能建立const ref,out 和ref的區別僅在於使用out時必須進行賦值
void settoten(out
int number)
普通的陣列,不過需要使用new在堆上建立
int test = new
int[size];
裡面可以存放值型別或引用型別。
arraylist test = new arraylist();
test3.add("chen");
test3.add("j");
test3.add("d");
test3.add("is");
變長陣列,和c++中的std::vector不同的是它可以存放不同型別的資料,意思就是內部它都會轉化為object型別。
它的缺點是:
資料型別不安全,涉及到父類指標指向子類物件的問題。
新增值型別時會發生裝箱操作。
完全類似於c++ 中的std::vector 可以當做vector來使用。
list test = new list();
類似於std::forward_list
類似於std::queue和std::stack
類似於std::unordered_map, 內部用hash實現,煉表處理衝突,時間複雜度低,空間複雜度大。
常用資料結構總結(基於C )
目錄 棧 stack 簡介 宣告基本操作 示例 佇列 queue 簡介 宣告基本操作 示例 優先佇列 priority queue 簡介 宣告基本操作 調整輸出次序 二叉搜尋樹 簡介 基本概念 c 的stl中基於二叉搜尋樹有資料結構set和map 1.set 常用操作 2.map 宣告 常用操作 示...
資料結構簡單C
1.陣列 一堆相同型別資料的集合 一定是在記憶體上佔據一塊連續的空間 1.1一維資料 1陣列的定義 資料型別 陣列名 大小 資料型別 陣列名 大小 初始化 int arr 10 陣列名是陣列首位址 2陣列的賦值 陣列名 下標 取到陣列某個元素 陣列下標範圍0 n 1 arr 4 10 3陣列的初始化...
C 常用資料結構
資料結構 型別及備註 插入和刪除 查詢array 順序儲存的線性表 定長 不支援 這裡的插入與刪除指會更改表長的行為 o n linkedlist 鏈式儲存的線性表 不定長 o 1 o n list 順序儲存的線性表 不定長 動態擴容 o n 結尾則是o 1 o n stack 棧 不定長 動態擴容...