c++ STL 库包含基本的图,列表,栈等数据结构以及基本操作,方便使用。
结构图
set(集合)
内部自动有序 不含重复元素 容器
1 2 3 4 5 6 7
| #include <set> set<int> name; set<double> name; set<char> name; set<struct node> name; set<set<int> > name; set<int> arr[10];
|
set容器内元素的访问
set只能通过迭代器(iterator)访问(除了vector和string之外的STL容器都不支持*(it+i)的访问方式) :
1 2
| set<int>::iterator it; set<char>::iterator it;
|
1 2 3 4
| for (set<int>::iterator it = st.begin(); it != st.end(); it++) { cout << *it << endl; }
|
常用函数
insert(value)
find(value)
find(value)返回的是set中value所对应的迭代器,也就是value的指针(地址)
1
| cout << *(st.find(2)) << endl;
|
erase(it)
erase(iteratorBegin , iteratorEnd)
左闭右开
size()
1
| cout << st.size() << endl;
|
vector(矢量)
变长数组
1 2 3 4 5 6 7 8 9
| #include <vector>
vector<int> name; vector<double> name; vector<char> name; vector<struct node> name; vector<vector<int> > name;
vector<int> array[SZIE];
|
二维数组中,它的一维形式就是地址。例如:
1 2
| int arr[3][2]; cout<<arr[0]<<endl;
|
output:
vector容器内元素的访问
(1)通过下标访问
(2)通过迭代器访问
迭代器(iterator)可以理解为指针
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| vector<类型名>::iterator 变量名;
vector<int>::iterator it; vector<double>::iterator it;
vector<int>::iterator it=v.begin(); for (int i = 0; i < v.size(); i++) { cout<<it[i]<<" "; }
vector<int>::iterator it=v.begin(); for (int i = 0; i < v.size(); i++) { cout<<*(it+i)<<" "; }
for (vector<int>::iterator it=v.begin(); it!=v.end();it++) { cout<<*it<<" "; }
|
vector常用函数实例解析
(1)push_back(item)
(2)void pop_back()
(3)size()
(4)clear()
(5)insert()
1 2 3
| insert(__position,__x);
v.insert(v.begin()+2,-1);
|
(6)erase() 左闭右开
1 2 3 4 5
| erase(__position); v.erase(v.begin()+3);
erase(__positionBegin,__positionEnd); v.erase(v.begin()+1,v.begin()+4);
|