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;
}
相关推荐
鹅毛在路上了9 分钟前
C++, ffmpeg, libavcodec-RTSP拉流,opencv实时预览
c++·opencv·ffmpeg
John_ToDebug23 分钟前
定制 ResourceBundle 的实现与 DuiLib 思想在 Chromium 架构下的应用解析
c++·chrome·ui
lingchen190632 分钟前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
gb42152871 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
一朵梨花压海棠go1 小时前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript
蒋星熠1 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程
翻滚丷大头鱼2 小时前
Java 集合Collection—List
java·开发语言
小欣加油2 小时前
leetcode 面试题01.02判定是否互为字符重排
数据结构·c++·算法·leetcode·职场和发展
王璐WL2 小时前
【c++】c++第一课:命名空间
数据结构·c++·算法
aramae2 小时前
C++ -- 模板
开发语言·c++·笔记·其他