C++ list基础概念、list初始化、list赋值操作、list大小操作、list数据插入

发布于:2025-05-27 ⋅ 阅读:(42) ⋅ 点赞:(0)

list基础概念:list中的每一部分是一个Node,由三部分组成:val、next、prev(指向上一个节点的指针)

list初始化的代码,见下

#include<iostream>
#include<list>

using namespace std;

void printList(const list<int>& l) {
	for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}

int main() {
	// 1 默认构造函数
	list<int> l1;
	cout << "l1: ";
	printList(l1);

	// 2 初始化列表
	list<int> l2_1 = { 7,6,5,4,3 };
	cout << "l2_1: ";
	printList(l2_1);

	list<int> l2_2({ 7,5,4,3,2 });
	cout << "l2_2: ";
	printList(l2_2);

	// 3 迭代器
	list<int> l3(l2_2.begin(), l2_2.end());
	cout << "l3: ";
	printList(l3);

	// 4 全0初始化
	list<int> l4(8);
	cout << "l4: ";
	printList(l4);

	// 5 初始化a个b
	list<int> l5(5, 8);
	cout << "l5: ";
	printList(l5);

	// 6 拷贝构造函数
	list<int> l6(l2_2);
	cout << "l6: ";
	printList(l6);
	return 0;
}

list赋值操作,代码见下

#include<iostream>
#include<list>

using namespace std;

void printList(const list<int>& l) {
	for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}

int main() {
	
	list<int> l1 = { 5, 6, 7, 3, 1 };

	list<int> l2;

	// 1 = 
	l2 = l1;
	printList(l2);

	// 2 assign(迭代器)
	list<int> l3;
	l3.assign(l1.begin(), l1.end());
	printList(l3);

	// 3 assign(初始化列表)
	list<int> l4;
	l4.assign({ 5, 9, 1, 2, 4 });
	printList(l4);

	// 4 assign(a, b)
	list<int> l5;
	l5.assign(5, 4);
	printList(l5);
	return 0;
}

list大小操作,代码见下
 

#include<iostream>
#include<list>

using namespace std;

void printList(const list<int>& l) {
	for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}
/*
empty
size
resize
*/
int main() {
	
	list<int> l1;
	cout << "l1.empty() = " << l1.empty() << endl;
	cout << "l1.size() = " << l1.size() << endl;

	l1.assign({ 4, 3, 6, 2, 1 });
	printList(l1);

	l1.resize(18);
	cout << "l1.empty() = " << l1.empty() << endl;
	cout << "l1.size() = " << l1.size() << endl;
	printList(l1);

	l1.resize(20, 6);
	cout << "l1.empty() = " << l1.empty() << endl;
	cout << "l1.size() = " << l1.size() << endl;
	printList(l1);

	l1.resize(1000);
	l1.resize(7);
	cout << "l1.empty() = " << l1.empty() << endl;
	cout << "l1.size() = " << l1.size() << endl;
	printList(l1);


	return 0;
}

结果见下,供理解

list数据插入,代码见下:

#include<iostream>
#include<list>

using namespace std;

void printList(const list<int>& l) {
	for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}
/*
push_front
push_back
insert
*/
int main() {
	list<int> l;

	//1 push_front
	l.push_front(-3);
	l.push_front(-2);
	l.push_front(-1);

	//2 push_back
	l.push_back(3);
	l.push_back(2);
	l.push_back(1);

	//3 insert(迭代器, 值)
	list<int>::iterator it = l.begin();
	it++;
	
	l.insert(it, 0);
	printList(l);

	//4 insert(迭代器, 数量, 值)
	it = l.end();
	--it;
	l.insert(it, 5, 8);
	printList(l);

	//5 insert(迭代器, 迭代器的开始位置, 迭代器的结束位置)
	it = l.begin();
	it++;
	l.insert(it, l.begin(), l.end());
	printList(l);

	return 0;
}

运行结果见下,便于理解


网站公告

今日签到

点亮在社区的每一天
去签到