動態陣列vector和List

2021-06-20 21:33:34 字數 2104 閱讀 8508

陣列是我們用的非常多的一種資料結構.儲存一組物件時首先想到的就是用它.它的優點乙個是因為在記憶體中連續分配,所以通過下標索引訪問非常快.二個是使用簡單,取值賦值修改都很方便.

c++中我們一般像這樣定義乙個陣列int numarr = ; //或者int numarr[3] = ;

而c#中是這樣int numarr = ;

靜態陣列最大的缺點就是定義的時候大小是固定了的(顯式指定大小,或者編譯器通過賦值元素數量推算出具體大小).這樣一來我們要儲存一些大小不固定的一組物件時就麻煩的.乙個比較笨的辦法是預先做下估計,然後定義個比較大點的陣列.這樣很容易造成記憶體浪費.而且特殊情況下儲存的資料仍然會超出陣列的範圍.

針對陣列大小固定的缺點弄出了個動態陣列.在c++的stl中叫vector ,在c#中叫list.兩者都有用到泛型技術.

動態陣列涉及到的主要操作主要是:賦值(新增),插入,查詢,刪除,遍歷,排序

引用標頭檔案

#include

#include

using namespace std;

vectorvec;    //定義乙個int型的動態陣列

vec.push_back(1); //往陣列中新增元素1,不知道為啥不用個add來代表新增元素

vec.push_back(2);

vec.push_back(4);

vector::iterator it = vec.begin();  //iterator迭代器可以簡單理解為類似指向元素位置的指標.這裡表明是起始位置

vec.insert( it + 2, 3);    // 在第三個元素前面插入3,也就是要在4前面插入3.

int num = vec[2];  //num的值為3

num  = vec.at(2);  //num的值為3

///三種遍歷陣列的方法

for(vector::size_type i = 0; i < vec.size(); i++) //遍歷整個陣列 ,方法1

cout<

for(it = vec.begin(); it != vec.end(); it++)  //遍歷整個陣列 ,方法2

cout<< *it <

for_each(vec.begin(), vec.end(), show); //遍歷整個陣列 ,方法3

//函式show一定義如下

//void show(const int num){ coutvec.pop_back(); //刪除陣列最後乙個元素

it = vec.begin(); //因為前面迭代器操作過後會失效,需要重新賦值.

vec.erease(it + 1); //刪除指定位置元素

vec.clear();  //刪除所有元素

sort(vec.begin() , vec.end());  //排序

實際上c#中還有個叫arraylist的動態陣列,但沒有用到泛型技術,陣列裡面只能儲存乙個個的object型別,需要自己去做些型別轉換.

引用命名空間

using system.collections.generic

listarray = new list();

array.add(1);  //新增元素

array.add(2);

array.add(4);

for (int i = 0; i < array.count; i++)       //遍歷整個陣列,方法1

console.writeline(array[i]);

list.enumerator it = array.getenumerator(); //遍歷整個陣列,方法2

while (it.movenext())

console.writeline(it.current);

foreach (int item in array)  //遍歷整個陣列,方法3

console.writeline(item);

array.insert(3, 3);

int num = array[2]; //結果為3

array.removeat(2); //刪除索引為2的元素

array.clear(); //清除所有元素

array.sort(); //排序

VECTOR動態陣列

vector是同一種型別的物件的集合 vector的資料結構很像陣列,能非常高效和方便地訪問單個元素 vector是乙個類模板 class template 要使用vector必須包含相關標頭檔案 include using std vector 注 空間是連續的 空間是可以擴充套件的 貌似是矛盾的...

Vector 動態陣列

容器 順序式容器 vecto 動態陣列,從末尾快速插入刪除,直接訪問任何元素 list 雙鏈表,從任何地方快速插入刪除 deque 雙向佇列,從前面與後面快速插入刪除,直接訪問任何元素 priority queue 優先佇列,最高優先順序元素總是最先出列 stack 棧,後進先出 先進後出 關聯式容...

vector 動態陣列

含義v.push back 在vector最後新增乙個元素 v.pop back 移除最後乙個元素 v.insert 插入元素到vector中 v.back 返回最末乙個元素 v.begin 返回第乙個元素的迭代器 v.end 返回最末元素的迭代器 譯註 實指向最末元素的下乙個位置 v.erase ...