c++ list 合并操作函数实例

简介: #include #include using namespace std;//list 链表的打印void print(list& l){ list::iterator i,iend; iend = l.
#include <list>
#include <iostream>
using namespace std;

//list  链表的打印
void print(list<int>& l)
{
	list<int>::iterator i,iend;
	iend = l.end();

	for (i=l.begin();i!=iend;i++)
	{
		cout<<*i<<' ';
	}
}

int main()
{

	list<int> l;

	for (int j = 1;j <=10;j++ )
	{
		l.push_back(j);
	}

	//splice()函数
	/*
	//void splice(iterator position , list& x)
	将x的链表归并到当前list链表的position位置之前, list对象x将被清空

	 void splice(iterator position , list& , iterator i)
	 将一个list的迭代器i值所指的元素,归并到当前list链表中, 并将被归并元素从原链表中删除


	//
	*/

	list<int> carry;
	carry.splice(carry.begin(),l,l.begin());

	cout<<"carry的链表元素为:";
	print(carry);
	cout<<endl;

	cout<<"l 的链表元素为:";
	print(l);
	cout<<endl;


	//merge()函数用法
	/*

	void merge()合并两个链表并使之默认升序(也可改):
	*/

	list<int> x;
	x.push_back(32);
	x.push_back(33);
	x.push_back(34);

	l.merge(x);

	cout<<"l 的链表元素为:";
	print(l);
	cout<<endl;


	getchar();
	return 0;

}

相关文章
|
5月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
156 0
|
9月前
|
算法 C++ 容器
模拟实现c++中的list模版
模拟实现c++中的list模版
|
8月前
|
安全 C++
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
466 6
|
11月前
|
编译器 C语言 C++
【c++丨STL】list模拟实现(附源码)
本文介绍了如何模拟实现C++中的`list`容器。`list`底层采用双向带头循环链表结构,相较于`vector`和`string`更为复杂。文章首先回顾了`list`的基本结构和常用接口,然后详细讲解了节点、迭代器及容器的实现过程。 最终,通过这些步骤,我们成功模拟实现了`list`容器的功能。文章最后提供了完整的代码实现,并简要总结了实现过程中的关键点。 如果你对双向链表或`list`的底层实现感兴趣,建议先掌握相关基础知识后再阅读本文,以便更好地理解内容。
250 1
|
11月前
|
算法 C语言 C++
【c++丨STL】list的使用
本文介绍了STL容器`list`的使用方法及其主要功能。`list`是一种双向链表结构,适用于频繁的插入和删除操作。文章详细讲解了`list`的构造函数、析构函数、赋值重载、迭代器、容量接口、元素访问接口、增删查改操作以及一些特有的操作接口如`splice`、`remove_if`、`unique`、`merge`、`sort`和`reverse`。通过示例代码,读者可以更好地理解如何使用这些接口。最后,作者总结了`list`的特点和适用场景,并预告了后续关于`list`模拟实现的文章。
368 7
|
11月前
|
存储 编译器 C++
C++ initializer_list&&类型推导
在 C++ 中,`initializer_list` 提供了一种方便的方式来初始化容器和传递参数,而右值引用则是实现高效资源管理和移动语义的关键特性。尽管在实际应用中 `initializer_list&&` 并不常见,但理解其类型推导和使用方式有助于深入掌握现代 C++ 的高级特性。
168 4
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
487 6
|
存储 算法 C++
【C++打怪之路Lv10】-- list
【C++打怪之路Lv10】-- list
134 1
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
289 0
C++ 多线程之线程管理函数