linux下练习 c++ 类库中list的特性、关联式容器共性介绍

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: /* 库模版中 list 特性: 双向链表 增删:.push_front(element),.pop_front(),.remove(element) 不支持下标访问 除去重复:.
/*
库模版中 list 特性:
双向链表
增删:.push_front(element),.pop_front(),.remove(element)
不支持下标访问
除去重复:.unique() 相邻的重复元素只保留一个
排序:.sort(),默认用'<'号比较,自定义类型要重载运算符
倒置:.reverse()
转移:.aplice(pos,list2),.aplice(pos,list2,pos2),
	 .aplice(pos,list2,pos2_begin,pos2_end)  
归并:.merge(list2)
*/
#include<iostream>
using namespace std;
#include<list>
#include<cassert>
#include "print.h"
bool mult3(int x,int y)//模3的余数从小到大
{
	x%=3;
	y%=3;
	return x<y;
}

int main()
{
	int a[7]={3,5,5,8,5,1,6};
	int b[5]={5,7,9,2,4};
	list<int> li(a,a+7),li2(b,b+5);
	print(li.begin(),li.end());
	li.unique();//可自定义判断相等的函数
	print(li.begin(),li.end());
	li.sort();//排序
	li.unique();//去重
	print(li.begin(),li.end());
	li.reverse();//倒序
	print(li.begin(),li.end());
	li.splice(li.begin(),li2);//转移
	print(li.begin(),li.end());
	assert(li2.empty());//判断是否为空,为假时才报错
	li.remove(5);//删除值为5的所有元素
	print(li.begin(),li.end());
	li.sort();li.unique();//去重
	print(li.begin(),li.end());
	li2.push_back(3);li2.push_back(5);
	li2.push_back(9);li2.push_back(10);
	print(li2.begin(),li2.end());
	li.merge(li2);//将li2合并到li中
	print(li.begin(),li.end());
	b[3]=6;
	li2.assign(b,b+5);
	print(li2.begin(),li2.end());
	li2.sort(greater<int>());//用'>'排序,从大到小
	print(li2.begin(),li2.end());
	li2.sort(mult3);//用自写规则排序,从小到大
	print(li2.begin(),li2.end());
	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;



}

#endif


 


 

 

 

/*
关联式容器共性:二叉查找树实现,自动根据关键字排序
		  set<K>,multiset<K>,map<K,V>,multimap<K,V>
查找:.find(key) 失败返回.end()
统计:.count(key)
删除:.erase(key)
插入:.insert(element)
区间:.lower_bund(key) //取得关键字为key的第一个元素位置
	 .upper_bound(key) //取得关键字为key的最后一个元素之后的位置
	 .equal_range(key) 取得关键字为key的区间,返回pair
*/


 

目录
打赏
0
0
0
0
10
分享
相关文章
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
85 16
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
139 2
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
1331 3
|
7月前
|
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器1
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
111 5
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
136 2
|
7月前
|
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
899 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
在Linux中,如何进行容器技术的应用?
在Linux中,如何进行容器技术的应用?
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
这篇文章讨论了Linux虚拟机磁盘扩容的方法,包括外部配置、具体扩容步骤和扩容后的效果验证。同时,文章还涉及了Docker容器磁盘满的问题及其解决方法,如删除不必要的镜像和容器,以及调整Docker的安装路径。此外,还提到了意外情况的处理,例如误删除停止的容器后的应对措施。最后,文章还提供了使用Docker安装nginx的步骤和成功访问的截图。
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx