/*
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...