鍊錶(list)的組成:有一系列的結點組成
結點的組成:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域
由於鍊錶的儲存方式並不是連續的記憶體空間,因此鍊錶中的迭代器只支援前移和後移,屬於雙向迭代器
list優點:
list缺點:
list有乙個重要的性質,插入操作和刪除操作都不會造成原有list迭代器的失效,這在vector是不成立的
void
myprintf
(const list<
int>
&l) cout << endl;
}
示例:
list<
int> l;
l.push_front(1
);l.push_front(2
);l.push_back(3
);l.push_back(4
);myprintf
(l);
list<
int>l1(
5,100)
;myprintf
(l1)
; list<
int>
l2(l)
;myprintf
(l2)
; list<
int>
l3(l1.
begin()
,l1.
end())
;myprintf
(l3)
;
賦值有兩種方法: 操作符 = 和 .assign()
交換:示例:
list<
int> l;
l.push_back(1
);l.push_back(2
);l.push_back(3
);l.push_back(4
);myprintf
(l);
list<
int> l1;
l1.assign(6
,100);
myprintf
(l1)
; list<
int> l2;
l2.assign
(l.begin()
,l.end()
);myprintf
(l2)
; l2.
swap
(l1)
;myprintf
(l2)
;
示例:
list<
int> l;
l.push_back(1
);l.push_back(2
);l.push_back(3
);l.push_back(4
);myprintf
(l);
list<
int> l1;
l1.push_back(11
);l1.
push_back(12
);l1.
push_back(13
);l1.
push_back(14
);l.insert
(l.begin()
,3,99
);myprintf
(l);
l.insert
(l.end()
,l1.
begin()
,l1.
end())
;myprintf
(l);
l.erase
(l.begin()
);myprintf
(l);
l.remove(99
);myprintf
(l);
l.clear()
;myprintf
(l);
注意:list不能用 [ ] 和 .at(int idx) 的方式訪問容器中的元素,因為list儲存方式並不是連續的記憶體空間,只要一下兩個方式
示例:
list<
int> l;
l.push_back(1
);l.push_back(2
);l.push_back(3
);l.push_back(4
);myprintf
(l);
//list在訪問元素時不能用和.at()的方式訪問,因為list本質時鍊錶,
//不是用連續線性儲存資料,迭代器也是不支援隨機訪問的
cout <<
"list第乙個元素:"
<< l.
front()
<< endl;
cout <<
"list最後乙個元素:"
<< l.
back()
<< endl;
//驗證迭代器也是不支援隨機訪問的
/*list::iterator it = l.begin();
it++;//表達正確
it = it + 1;//表達錯誤
*/
示例:
bool
mycompare
(const
int&val,
const
int&val2)
void
fun(
)
C STL 標準模板庫
1.泛型程式設計 在c 中,模板是泛型程式設計的基礎。下面有乙個stl初體驗的 include include include include include include using namespace std 自定義函式物件 template class square int test int...
C STL標準模板庫
stl共有6中元件 容器 容器介面卡 迭代器 演算法 函式物件 仿函式 和函式介面卡。最常用的是順序容器,順序容器內的元素按其位置進行儲存和訪問。除順序容器外,標準庫還定義了幾種關聯容器。這裡我們主要講一下順序容器。標準庫定義了三種順序容器型別 vector list和deque,它們的差別在於訪問...
c STL(標準模板庫)
c stl 標準模板庫 是一套功能強大的 c 模板類,提供了通用的模板類和函式,這些模板類和函式可以實現多種流行和常用的演算法和資料結構,如向量 鍊錶 佇列 棧。元件描述 容器 containers 容器是用來管理某一類物件的集合。c 提供了各種不同型別的容器,比如 deque list vecto...