C++ list代码练习、set基础概念、set对象创建、set大小操作

对应力扣,回文链表,代码见下

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        list<int> li;
        ListNode *tmp = head;
        while(tmp){
            li.push_back(tmp->val);
            tmp = tmp->next;
        }
        for(list<int>::reverse_iterator it = li.rbegin(); it != li.rend(); it++){
            if((*it)!= head->val){
                return false;
            }
            head = head -> next;
        }
        return true;
    }
};

有序集合set的特点:容器内的元素不重复、每插入一个元素,容器内的元素都会进行有序排列。

还有另外一种mutiset:容器内的元素可以重复、每插入一个元素,容器内的元素都会进行有序排序。

容器特点:线性容器(vector、string、list),树形容器(set、multiset)

set对象创建,代码见下

cpp 复制代码
#include<iostream>
#include<set>

using namespace std;

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

int main() {
	// 1 默认构造函数
	set<int> s1;
	cout << "s1: ";
	printSet(s1);

	// 2 初始化列表
	set<int> s2_1 = { 5, 4, 9, 3, 2, 1 };
	cout << "s2_1: ";
	printSet(s2_1);

	set<int> s2_2 = { 9, 8, 7, 7, 6, 5 };
	cout << "s2_2: ";
	printSet(s2_2);

	// 3 迭代器方式
	set<int> s3 = {s2_1.begin(), s2_1.end()};
	cout << "s3: ";
	printSet(s3);

	// 4 拷贝构造
	set<int> s4(s3);
	cout << "s4: ";
	printSet(s4);
	return 0;
}

set赋值操作,代码见下

cpp 复制代码
#include<iostream>
#include<set>

using namespace std;

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

int main() {
	set<int> s = { 9, 8, 4, 3, 1, 2 };
	cout << "s: ";
	printSet(s);

	// 1 = set对象
	set<int> s1;
	s1 = s;
	cout << "s1: ";
	printSet(s1);

	// 2 = 初始化列表
	set<int> s2;
	s2 = { 3, 5, 4 };
	cout << "s2: ";
	printSet(s2);

	return 0;
}

list大小操作,代码见下

cpp 复制代码
#include<iostream>
#include<set>

using namespace std;

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

int main() {
	set<int> s = { 9, 8, 4, 3, 1, 2 };
	cout << "s.enpty(): " << s.empty() << endl;
	cout << "s.size(): " << s.size() << endl;

	return 0;
}
相关推荐
程序喵大人12 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
cui_ruicheng12 小时前
Python从入门到实战(十六):多进程编程
开发语言·python
wdfk_prog14 小时前
嵌入式面试真题第 15 题:不可恢复异常后的通用崩溃快照、调用栈保存与离线分析架构
linux·开发语言·面试·架构
晴空了无痕14 小时前
从 Go 基础到 K8s:一条可落地的 Go 服务端成长路线
开发语言·后端·golang·kubernetes
神明不懂浪漫14 小时前
【第五章】Java中的继承与多态
java·开发语言
神州世通15 小时前
解密企业通信安全防线:Avaya Aura 三层安全架构深度解析
开发语言·php
AC赳赳老秦16 小时前
企业工商公开信息采集分析:OpenClaw 批量查询企业工商信息,生成企业画像报告
大数据·开发语言·python·自动化·php·deepseek·openclaw
qq_25183645716 小时前
基于java Web 动漫视频网站毕业论文
java·开发语言·前端
野生风长16 小时前
C++入门基础:从命名空间到引用与指针的全面解析
开发语言·c++
FoldWinCard16 小时前
D6 Python 基础语法 --- 保留关键字
开发语言·python