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;
}
相关推荐
倒头就睡的小比特3 天前
算法竞赛C++常用的STL
c++·算法
weilx12343 天前
C++笔记-文件IO-<fcntl.h>
c++
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
Smileyqp沛沛3 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·3 天前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven3 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法