目录
Vector
创建vector
增加函数
删除函数
遍历函数
判断函数
大小函数
其他函数
Deque
(1) 构造函数
(2) 增加函数
(3) 删除函数
(4) 遍历函数
(5) 判断函数
(6) 大小函数
(7) 其他函数
List
- 初始化
- 插入数据
- 遍历数据
- 删除数据
- 排序数据
- 合并数据
- 交换数据
- 获取首/尾数据
Stack
Queue
Map and Multimap
Set and Multiset
Vector
创建vector
增加函数
void push_back(const T& x);//向量尾部增加一个元素X
iterator insert(iterator it,const T& x);//向量中迭代器指向元素前增加一个元素x
iterator insert(iterator it,int n,const T& x);//向量中迭代器指向元素前增加n个相同的元素x
iterator insert(iterator it,const_iterator first,const_iterator last);//向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
删除函数
iterator erase(iterator it);//删除向量中迭代器指向元素
iterator erase(iterator first,iterator last);//删除向量中[first,last)中元素
void pop_back();//删除向量中最后一个元素
void clear();//清空向量中所有元素
遍历函数
reference at(int pos);//返回pos位置元素的引用
reference front();//返回首元素的引用
reference back();//返回尾元素的引用
iterator begin();//返回向量头指针,指向第一个元素
iterator end();//返回向量尾指针,指向向量最后一个元素的下一个位置
reverse_iterator rbegin();//反向迭代器,指向最后一个元素
reverse_iterator rend();//反向迭代器,指向第一个元素之前的位置
判断函数
bool empty() const;//判断向量是否为空,若为空,则向量中无元素
大小函数
int size() const;//返回向量中元素的个数
int capacity() const;//返回当前向量张红所能容纳的最大元素值
int max_size() const;//返回最大可允许的vector元素数量值
其他函数
void swap(vector&);//交换两个同类型向量的数据
void assign(int n,const T& x);//设置向量中第n个元素的值为x
void assign(const_iterator first,const_iterator last);//向量中[first,last)中元素设置成当前向量元素
Deque
(1) 构造函数
deque();//创建一个空deque
deque(int nSize);//创建一个deque,元素个数为nSize
deque(int nSize,const T& t);//创建一个deque,元素个数为nSize,且值均为t
deque(const deque &);//复制构造函数
(2) 增加函数
void push_front(const T& x);//双端队列头部增加一个元素X
void push_back(const T& x);//双端队列尾部增加一个元素x
iterator insert(iterator it,const T& x);//双端队列中某一元素前增加一个元素x
void insert(iterator it,int n,const T& x);//双端队列中某一元素前增加n个相同的元素x
void insert(iterator it,const_iterator first,const_iteratorlast);//双端队列中某一元素前插入另一个相同类型向量的[forst,last)间的数据
(3) 删除函数
Iterator erase(iterator it);//删除双端队列中的某一个元素
Iterator erase(iterator first,iterator last);//删除双端队列中[first,last)中的元素
void pop_front();//删除双端队列中最前一个元素
void pop_back();//删除双端队列中最后一个元素
void clear();//空双端队列中最后一个元素
(4) 遍历函数
reference at(int pos);//返回pos位置元素的引用
reference front();//返回手元素的引用
reference back();//尾元素的引用
iterator begin();//返回向量头指针,指向第一个元素
iterator end();//返回指向向量中最后一个元素下一个元素的指针(不包含在向量中)
reverse_iterator rbegin();//反向迭代器,指向最后一个元素
reverse_iterator rend();//反向迭代器,指向第一个元素的前一个元素
(5) 判断函数
bool empty() const;//向量是否为空,
(6) 大小函数
Int size() const;//返回向量中元素的个数
int max_size() const;//返回最大可允许的双端对了元素数量值
(7) 其他函数
void swap(deque&);//交换两个同类型向量的数据
void assign(int n,const T& x);//向量中第n个元素的值设置为x
List
- 初始化
// list 初始化
void InitList()
{
list<int> lst; //初始化一个空的
list<int> lst1(10); // 初始化一个包括10个元素的,且10个元素值都是0
list<int> lst2(10, 55); // 初始化一个包括10个原始,且10个元素值都是55
list<int> lst3(lst1); // 使用一个list来初始化,创建了一个副本
list<int> lst4(++lst2.begin(),--lst2.end()); // 使用一个list的部分元素来初始化
}
- 插入数据
// list 插入数据
template <class T>
list<T> InsertList(list<T> lst, T t)
{
lst.push_back(t); // 插入到列表末端
t = 10;
lst.push_front(t); // 插入到列表的最前端
lst.assign(10, t); // 放入10个相同的元素(会清除掉之前存入的所有数据)
T arr[10] = {1,2,3,4,5,6,7,8,9,0};
lst.assign(arr, arr + 10); // 将数组数据放入list(会清除掉之前存入的数据)
list<T> lst1(10, 15);
lst.insert(lst.begin(), lst1.begin(), lst1.end()); // 在指定位置,插入另一个list的部分元素
lst.insert(lst.end(), 5, 20); // 在指定位置,插入5个元素,值均为20
lst.insert(--lst.end(), 25); // 在指定位置,直接插入值为25的元素
return lst;
}
- 遍历数据
// list 遍历数据
void IteratorList(list<int> lst)
{
if (lst.empty()) // 判断列表是否为空
return;
list<int>::iterator iter = lst.begin(); // 前向迭代器
for (; iter != lst.end(); iter++)
{
cout << "iter value: " << *iter << endl;
}
list<int>::reverse_iterator revIter = lst.rbegin(); // 方向迭代器
for (; revIter != lst.rend(); revIter++)
{
cout << "revIter value: " << *revIter << endl;
}
list<int>::const_iterator constIter = lst.cbegin();
for (; constIter != lst.cend(); constIter++)
{
cout << "constIter value: " << *constIter << endl;
}
}
- 删除数据
// list 删除数据
void DeleteList(list<int>& lst)
{
if (lst.empty())
return;
lst.pop_back(); // 删除末尾的元素
lst.pop_front(); // 删除第一个元素
lst.erase(lst.begin(), ++lst.begin()); // 删除指定范围的元素(使用迭代器来确定需要被删除的元素),区间[ )
lst.erase(--lst.end()); // 删除指定迭代器指向的元素
lst.remove(20); // 删除指定值的元素,若多个元素值相同,则多个元素均会被删除(通过数值的方式来确定被删除元素,且删除所有与 val 值相等的元素)
lst.unique(); // 删除list中重复的数据,即去重,会保留一个元素
lst.clear(); // 清除掉所有数据
}
- 排序数据
int arr[10] = {3,2,1,4,6,5,9,7,8,0};
lst.assign(arr, arr + 10); // 将数组数据放入list(会清除掉之前存入的数据)
lst.sort(); // 按从小到大排序
list<int>::iterator iter = lst.begin();
for (; iter != lst.end(); iter++)
{
cout << "iter value: " << *iter << endl; // 分别输出:0 1 2 3 4 5 6 7 8 9
}
lst.reverse(); // 按从大到小排序,即倒序
iter = lst.begin();
for (; iter != lst.end(); iter++)
{
cout << "iter value: " << *iter << endl; // 分别输出:9 8 7 6 5 4 3 2 1 0
}
- 合并数据
list<int> lst1(10, 33); // 10个元素,值均为33
list<int> lst2(10, 44); // 10个元素,值均为44
list<int> lst3(10, 55); // 10个元素,值均为55
// 合并方式一
lst1.merge(lst2); // 合并元素后,lst2被清空,在lst1的末端添加lst2的元素。即将lst2中元素移到lst1中
// 合并方式二
lst1.splice(lst1.begin(), lst3, lst3.begin(), --lst3.end()); // 在指定位置,将lst3中的指定范围元素移到lst1中,lst3中对应元素被清除,区间范围:[ }
lst1.splice(lst1.end(), lst3, lst3.begin()); // 在指定位置,将lst3中指定元素移到lst1中,同时从lst3中清除该元素
lst1.splice(lst1.end(), lst3); // 在指定位置,将lst3中所有元素移至lst1中,并清空lst3
- 交换数据
list<int> lst1(10, 33); // 10个元素,值均为33
list<int> lst2(10, 44); // 10个元素,值均为44
lst1.swap(lst2); // 二个list相互交互所有元素
- 获取首/尾数据
list<int> lst;
int arr[10] = {3,2,1,4,6,5,9,7,8,0};
lst.assign(arr, arr + 10);
// 获取最后一个和第一个元素的值
cout << "back value:" << lst.back() << "front value:" << lst.front() << endl; // 输出 back value:0 front value:3
cout << ++lst.back() << "\t" << ++lst.front() << endl; // 输出 1 4,同时list中对应元素也变成了1和4
Stack
empty();// 堆栈为空则返回真
pop();// 移除栈顶元素
push();// 在栈顶增加元素
size();// 返回栈中元素数目
top();// 返回栈顶元素
Queue
push(int x);// 将x压入队列的末端
pop(); //弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值
front();// 返回第一个元素(队顶元素)
back();// 返回最后被压入的元素(队尾元素)
empty();// 当队列为空时,返回true
size();// 返回队列的长度
Map and Multimap
map 与 multimap是存储key-value(键-值 对)类型的容器。
不同之处在于:map只允许key与 value一一对应;multimap一个key可对应多个value;
Set and Multiset