c 標準庫vector list使用練習

2022-06-26 17:21:08 字數 2191 閱讀 2408

/*

vector順序儲存,隨機訪問快

list鍊錶儲存,插入刪除快

deque占用記憶體多,兼具兩者優點

注意:1.vector嚴格順序儲存

2.list的迭代器只能做++或--運算,要一次移動多個位置使用advance(iterator,offset)

3.注意迭代器失效問題

4.尤其注意list的刪除時接收新位址的問題

*/#include#include#includeusing namespace std;

void displayvector(vector&v)

cout << endl;

}int main();

vectorv2(a, a + 5);

/*//at()函式返回指定位置的值並可判斷是否越界。在visual studio 中會引發中斷異常

for (int i = 0; i < v1.size() + 1; i++)

cout << endl;

*/ //push_back在vector後面插入新值,重新分配記憶體,pop_back刪除末尾的元素

for (int i = 0; i < 10; i++)

displayvector(v2);

//判斷vector是否為空

cout << "v.empty()=" << v.empty() << endl;

//迭代器訪問vector

vector::iterator ite = v2.begin();

for (ite; ite != v2.end(); ite++)

cout << endl;

//利用insert向vector中插入元素

ite = find(v2.begin(), v2.end(), 5);

v2.insert(ite, 3, 666);

v2.insert(v2.begin() + 3, 2, 333);

displayvector(v2);

//清空v2中的元素

v2.clear();

displayvector(v2);

/*插入位置的迭代器一般最好為:

begin()或 end()返回的

stl 演算法(如find函式)的返回位,find可用於查詢元素,然後在這個位置插入另乙個元素(這將導致查詢的元素向後移).

事實是size()為0的vector插入位置如果寫begin()+pos或者end()+pos,均會報越界錯誤。

不太懂的是既然capacity不為零,說明已經分配好了空間,為什麼會有越界錯誤。

也許是因為vector是嚴格要求順序儲存。

當然要想在頭尾插入最好用deque,用法和vector基本相同。

要想在陣列中頻繁插入刪除,使用list。

*/ //初始化list

listl1(10);

listl2(10, 66);

displaylist(l2);

//宣告迭代器

list::const_iterator con_ite_list;

list::iterator ite_list=l2.begin();

//插入元素,頭尾插入同vector、deque,

//list的迭代器不是隨機訪問迭代器,是鍊錶中的指標,只能ite++或者ite--

//要運算list的迭代器,使用advance(ite,offset),注意不要越界

advance(ite_list, 5);

l2.insert(ite_list, 555);

displaylist(l2);

//刪除元素,可見插入後迭代器仍指向原來指向的元素而不是位置,而vector插入後迭代器則指向新插入的元素,也就是原來的位置

//注意警惕erase陷阱,刪除後接收新的位址值。

ite_list=l2.erase(--ite_list);

displaylist(l2);

//list排序,預設公升序,降序可以vector.reverse()反轉

l2.insert(++l2.begin(), 555);

l2.sort();

displaylist(l2);

//二維vector,不再贅述,參考

vector> num;

getchar();

return 0;

}

C 標準庫和C 標準模版庫

c 標準庫很大,在現在的情況下,c 標準庫確實越來越好,因為大的庫會包含大量的功能.標準庫中的功能越多,開發自己的應用程式時能借助的功能就越多,c 庫並非提供一切 很明顯的是沒有提供開發和圖形使用者介面的支援 但確實提供了很多.標準c 庫中主要有以下主要元件 標準c庫.i 0流技術.string.容...

c標準庫 signal 庫

c標準庫 signal 庫 的基本用法 雜談 最近在看 c標準庫 對於裡面的函式的用法和演算法有了乙個基本的理解。有一些庫很少用到,例如 庫,庫。每每看到 這些章節,我都潛意識的 認為 這些章節 不學也行,無所謂,所以看起書來 自然 比較浮躁。今天特意來網上 檢視資料來 學習 這兩個庫的用法。浮躁 ...

C 命名空間,標準庫,標準模板庫

全域性空間與命名空間 我們在使用c 時,匯入標頭檔案一般有兩種形式,帶 h 和不帶 h 一般來說,不帶 h 的是c 的標準標頭檔案,帶的是c語言的,h 裡面定義的所有類以及物件都是在全域性空間裡,不帶的是在命名空間std裡面。c 要相容c的標準庫,而c的標準庫里碰巧也已經有乙個名字叫做 string...