linux下练习 c++ 特殊容器、特殊函数的使用

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: //specialcontainer.cpp /*一般容器:stack,queue 特殊容器:priority_queue .push(element),.

//specialcontainer.cpp

/*一般容器:stack,queue

特殊容器:priority_queue

.push(element),.pop(),.empty()

stack:.top()

queue:.front(),.back()

priority_queue:.top()

没有迭代器

*/

#include<iostream>

#include<queue>

using namespace std;

int main()

{

	priority_queue<int> pq;

	pq.push(40);

	pq.push(20);

	pq.push(10);

	pq.push(50);

	pq.push(90);

	while(!pq.empty())

	{

		cout<<pq.top()<<' ';

		pq.pop();

	}

	cout<<endl;

	

	

	return 0;

}


 

//specialfunctions.cpp

/*一些特殊函数的用法

for_each()

copy()

copy_backward()

sort()

remove_copy_if()

find()

find_if()

count_if()

*/

#include<iostream>

#include<algorithm>

#include<string>

#include<cctype>

#include<vector>

#include "print.h"

using namespace std;

void add10(int& element)

{

	element+=10;

}

string printe(int element)

{

	cout<<element<<" ";

	return "ok";

}

class add

{

	int inc;

public:

	add(int d):inc(d){}

	void operator()(int& element)

	{

		element+=inc;

	}

};

template<typename Iter,typename Func>

void foreach(Iter ib,Iter ie,Func f)//与for_each功能一样

{

	while(ib!=ie) f(*ib++);

}

template<class Iter,class Pos>

void co(Iter ib,Iter ie,Pos p)//与copy一样功能

{

	while(ib!=ie) *(p++)=*(ib++);

}

bool func(int n)

{

		return n&1;//偶数为1

}

bool is_upper(const string& str)

{

	return isupper(str[0]);//大写开头

}

bool is_has_o(const string& str)

{

	return str.find_first_of("oO")!=string::npos;//以o开头的

}

int main()

{

	int a[5]={4,2,6,8,9};

	int b[8]={0};

	vector<int> vt(a,a+5);

	for_each(a,a+5,add10);

	for_each(a,a+5,printe);cout<<endl;

	for_each(a,a+5,add(4));//用add类实现想加多少就加多少

	for_each(a,a+5,printe);cout<<endl;

	sort(vt.begin(),vt.end());

	print(vt.begin(),vt.end());

	copy(vt.begin(),vt.end(),a);//把vt中的数据复制到a中去

	print(a,a+5,',');

    copy_backward(a,a+5,b+8);//把a中5个数据放到最后b的5个里面

	print(b,b+8);

	vector<int> v2;

	remove_copy_if(a,a+5,back_inserter(v2),func);//后插入

	//remove_copy_if(a,a+5,front_inserter(v2),func);//前插入,适用于deque

	print(v2.begin(),v2.end());

	string str[5]={"kk","hj","fg","sd","ad"};

	string *p=find(str,str+5,"sd");

	cout<<(p==str+5?"not find ":"find ")<<"sd"<<endl;//str+5 说明没找到

	p=find_if(str,str+5,is_upper);

	cout<<(p==str+5?"not find ":"find ")<<"upper first "<<endl;//str+5 说明没找到

	cout<<count_if(str,str+5,is_upper)<<endl;//统计符合条件的个数

	return 0;

}


//print.h

//print.h

#include <iostream>

using namespace std;

#ifndef print_fun

#define print_fun

template<typename T>

///显示序列数据

void print(T b,T e,char c=' ')

{

	bool isExit=false;

	while (b!=e)

	{

		cout<<*b++<<c;

		isExit=true;

	}

	if(isExit) cout<<endl;



}

template<typename K,typename V>

ostream& operator<<(ostream& o,const pair<K,V>& p)//重载输出map类型元素

{

	return o<<p.first<<':'<<p.second;

}

#endif


 

 

 

相关文章
|
1月前
|
网络协议 安全 Linux
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
91 0
|
1月前
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
86 1
Linux C/C++之IO多路复用(aio)
|
1月前
|
Ubuntu 安全 Linux
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
301 3
|
1月前
|
资源调度 Linux 调度
Linux C/C++之线程基础
这篇文章详细介绍了Linux下C/C++线程的基本概念、创建和管理线程的方法,以及线程同步的各种机制,并通过实例代码展示了线程同步技术的应用。
29 0
Linux C/C++之线程基础
|
1月前
|
Linux C++
Linux C/C++之IO多路复用(poll,epoll)
这篇文章详细介绍了Linux下C/C++编程中IO多路复用的两种机制:poll和epoll,包括它们的比较、编程模型、函数原型以及如何使用这些机制实现服务器端和客户端之间的多个连接。
25 0
Linux C/C++之IO多路复用(poll,epoll)
|
1月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
37 0
Linux C/C++之TCP / UDP通信
|
11天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
50 2
|
1天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
21 5
|
5天前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
下一篇
无影云桌面