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;
}
相关推荐
沐知全栈开发1 天前
HTML5 浏览器支持
开发语言
wasp5201 天前
AgentScope Java 核心架构深度解析
java·开发语言·人工智能·架构·agentscope
WHOVENLY1 天前
【javaScript】- 笔试题合集(长期更新,建议收藏,目前已更新至31题)
开发语言·前端·javascript
慌糖1 天前
流-为序列化解释
开发语言
LXS_3571 天前
Day 18 C++提高 之 STL常用容器(string、vector、deque)
开发语言·c++·笔记·学习方法·改行学it
王琦03181 天前
Python 函数详解
开发语言·python
胡伯来了1 天前
13. Python打包工具- setuptools
开发语言·python
小鸡吃米…1 天前
Python 中的多层继承
开发语言·python
deng-c-f1 天前
Linux C/C++ 学习日记(53):原子操作(二):实现shared_ptr
开发语言·c++·学习
wanghowie1 天前
01.07 Java基础篇|函数式编程与语言新特性总览
java·开发语言·面试