#include//以这个头文件为主
#include
void fun1(int x) {
cout << x << " ";
}
list lst{ 1,2,3,4,5 };
::for_each(lst.begin(), lst.end(), &fun1); cout << endl;//进行遍历,这里是遍历整个容器,左闭右开,第一个和第二个参数都是迭代器,第三个参数为一个函数的地址(里面写具体要干什么,比如输出)
vector vet{ 1,4,5,2,4,6,9,4 };
cout << ::count(vet.begin(), vet.end(), 4) << endl;//左闭右开,这里是在整个容器中找,第一个和第二个参数都是迭代器,第三个参数是要找的元素
vector vet1{ 1,4,5 };
vector vet2{ 1,4,5,6 };
cout << boolalpha /* 这个可以要输出的0变为false输出,把要输出的1变为true输出*/<< ::equal(vet1.begin(), vet1.end(), vet2.begin()) << endl;//第一个和第二个参数是第一个的范围,第三个参数是第二个的起点
vector vet5{ 1,2,3,4 };
vector::iterator ite=find(vet5.begin(), vet5.end(), 2);//前两个参数是查找的范围,第三个参数是要找的元素
//判断是否找到了
if (ite != vet5.end()) {
cout << "找到了 " << *ite << endl;
}
else {//没找到 返回的最后一个有效元素的下一个
cout << "没找到" << endl;
}
::sort(vet6.begin(), vet6.end());//默认升序
::sort(vet6.begin(), vet6.end(),greater<>());//指定降序,这里用了写好的降序会泽
vector vet7{ 5,8,6};
vector vet8{ 5,7,6,1,7,98,2,6,4,5 };
vector v7 = ::max(vet7, vet8);//按存入的顺序依次进行比较,判断完成后,返回容器(返回的是复制的容器)
void fun3(pair pr) {
cout << pr.first << '-' << pr.second << " ";
}
map m1 = { {"21",5},{"30",7} };
map m2 = { {"21",5},{"29",8} };
map mm1 = ::min(m1, m2);//把自动排序好的容器进行比较,先比较键值,再比较实值,判断完成后,返回容器(返回的是复制的容器)
::for_each(mm1.begin(), mm1.end(), &fun3); cout << endl;//进行遍历
list lst{ 1,2,3,4 };
list::iterator ite = lst.begin();
while (ite != lst.end()) {
cout << *ite << " ";
ite++;
}
cout << endl;
list::reverse_iterator ite2= lst.rbegin();
while (ite2 != lst.rend()) {
cout << *ite <<" ";
ite2++;
}
cout << endl;
//这里我们结合删除来写一下代码
list::reverse_iterator ite2= lst.rbegin();
while (ite2 != lst.rend()) {
if (*ite2 == 2) {//删除为2的元素
ite = ite2.base();//将反向迭代器,转为正向
//这里注意将反向迭代器转为正向迭代器后,会整体向后移动一个元素
ite = lst.erase(--ite);//这里向前移动一位
break;
}
ite2++;
}
1.容器适配器是一个封装了序列性容器的模板类,它在一般序列容器的基础上提供了一些不同的功能
2.容器适配器不支持迭代器,也不能使用算法函数
3.容器适配器默认都是用底层序列器实现的
4.容器适配器主要包括:stack栈适配器、queue队列适配器
实现的是一个后入先出(Last-In-First-Out,LIFO)的压入栈。它默认是用deque
去实现的,但也可以用list vector等底层容器实现
#include
using namespace std;//需要打开std命名空间
stack sta;
sta.push(1);//增加
sta.pop();//删除
sta.size();
sta.top();
sta.empty();//如果为空返回1,不为空返回0
实现的是一个先入先出(First-In-First-Out,FIFO)的队列,它默认使用deque去实现的,但也可以用list等底层容器实现
#include
using namespace std;//需要打开std命名空间
queue que;
que.push(1);;//增加
que.pop();//删除
que.size();
que.front()
que.empty();//如果为空返回1,不为空返回0
int add(int a,int b){
return a + b;
}
int main(){
cout<
class ADD{
int m_sum;//优点:有类的特征,如此代码,这里就可以对每次的加和进行一个存储
int opreator()(int a,int b){
m_sum + =a + b;
return a + b;
}
}
int main(){
ADD add;
cout<