- 2024-11-05容器迭代器
容器迭代器iterator:普通正向迭代器可以读取可以修改intmain(){vector<int>vec;for(inti=0;i<20;i++){vec.push_back(rand()%100+1);}autoit=vec.begin();for(;it!=vec.end();it++){if(
- 2024-11-04【c++篇】:深入剖析vector--模拟实现属于自己的c++动态数组
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨✨个人主页:余辉zmh–CSDN博客✨文章所属专栏:c++篇–CSDN博客文章目录前言一.`vector`类的默认成员函数整体框架构造函数析构函数拷贝构造函数赋值运算符重载函数测试二.`vector`
- 2024-11-04Iterator和ListIterator有什么区别
Iterator可以遍历Set和List集合,而ListIterator只能遍历List。Iterator只能单向遍历,而ListIterator可以双向遍历(向前/后遍历)。ListIterator从Iterator接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。ListItera
- 2024-11-04Iterator和ListIterator有什么区别
Iterator可以遍历Set和List集合,而ListIterator只能遍历List。Iterator只能单向遍历,而ListIterator可以双向遍历(向前/后遍历)。ListIterator从Iterator接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。ListItera
- 2024-11-01c++:vector
一、vector是什么?1.1vector的介绍vector是表示可变大小数组的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质
- 2024-10-31用哈希表封装myunordered_map和myunordered_set
在学习这个之前,已经学习过,myunordered_map和myunordered_set的基本用法和哈希表怎么用哈希思想模拟实现;因此为了更深入的了解myunordered_map和myunordered_set与哈希表的内容,我们来自己用哈希表模拟实现myunordered_map和myunordered_set;这种模拟实现和之前模拟实现map与set
- 2024-10-31c++ string 识别标志位并解析标志位后面的字符
解析字符串中的固定标志位正则表达式和iterator的配合应用#include<string>#include<map>#include<regex>#include<iostream>//替换\\M+后面的字符//\\M+195B6替换为文std::regexpattern(R"(\\M+[^\\M]*)");//匹配\\M+后跟任意非\\M的字符(0次或多次)
- 2024-10-31C++ 模板专题 - 标签分派(Tag Dispatching)
一:概述: 在C++中,TagDispatching是一种编程技巧,主要用于在编译期根据不同的类型或特征选择不同的函数重载或代码分支。TagDispatching借助类型标签(tags)进行函数调度,用于在模板中实现编译期的静态分派。这种方法特别适合在泛型编程中根据类型特性(如迭代器
- 2024-10-30list(c++)
list介绍list是STL容器中的容器,且元素在容器中的位置是分散的并与大小无关。list的底层是双向链表,其优势是在任意位置插入和删除元素的时间复杂度为O(1),但无法通过“下标[]”直接访问元素,需要通过从头(尾)遍历元素找到元素,多用于需要大量数据的插入和删除,且对数据的随机访问比
- 2024-10-30python基础(元组)
学习目标:元组的概念,创建,访问元组元素,删除和修改,推导式一.元组的概念:1.元组和列表类似,元素用小括号()包围2.各元素之间使用逗号隔开3.有序的,不可变的数据类型,没有增删该查,如果要修改,可以采用其他的数据类型,给元组重新赋值4.元素可以是不同的数据类型二.创建元组1.创
- 2024-10-29【C++】—— priority_queue :平衡效率与秩序的算法利器
去感受一棵草、一缕风、一场日落,去重新触摸真正的生活。——高盛元目录1、优先级队列1.1什么是优先级队列1.2 priority_queue的使用1.3仿函数2、priority_queue的模拟实现2.1整体框架接口2.2插入&&向上调整2.2删除&&向下调整2.3其他接口2.4优先级队列的应用
- 2024-10-28【C++笔记】list结构剖析及其模拟实现
【C++笔记】list结构剖析及其模拟实现
- 2024-10-25详解c++中的set_difference函数
set_difference功能描述:求两个集合的差集函数原型:set_difference(iteratorbeg1,iteratorend1,iteratorbeg2,iteratorend2,iteratordest);//求两个集合的差集//注意:两个集合必须是有序序列//beg1容器1开始迭代器//end1容器1结束迭代器//beg2容
- 2024-10-21可迭代对象
◼但是上面的代码整体来说看起来是有点奇怪的:我们获取一个数组的时候,需要自己创建一个index变量,再创建一个所谓的迭代器对象;事实上我们可以对上面的代码进行进一步的封装,让其变成一个可迭代对象;◼什么又是可迭代对象呢?它和迭代器是不同的概念;当一个对象实现了itera
- 2024-10-20java常见异常及解决方法
1.ArithmeticException算术异常是因为在Java中尝试执行除以零的操作导致的,Java不允许整数类型的变量进行除以零的操作,因为数学上这是没有定义的。当程序试图执行这样的操作时,JVM将抛出一个ArithmeticException异常。解决方法:1.通过if条件检查除数if(divisor!=0){
- 2024-10-18通过比较list与vector在简单模拟实现时的不同进一步理解STL的底层
cplusplus.com/reference/list/list/?kw=list当我们大致阅读完list的cplusplus网站的文档时,我们会发现它提供的接口大致上与我们的vector相同。当然的,在常用接口的简单实现上它们也大体相同,但是它们的构造函数与迭代器的实现却大有不同。(食用本文时建议与文末的模拟实现代
- 2024-10-18C++ -string -常见用法2
博客主页:【夜泉_ly】本文专栏:【C++】欢迎点赞
- 2024-10-15Collection集合的遍历
一、第一种方法,将集合转换成数组,进行循环遍历publicclassCollectionDemo3{publicstaticvoidmain(String[]args){Collectionc1=newArrayList();c1.add("java");c1.add("python");c1.add("list");c1.a
- 2024-10-15Java在for循环中修改集合
前天看到一篇文章什么?for循环也会出问题?,里面涉及到在for循环中修改集合,想起来自己刚入行的时候就碰到过类似的问题,于是复现了一下文章中的问题,并试验了其它在循环中修改集合的方法。底层原理参考什么?for循环也会出问题?这篇文章的分析1.在fori中修改集合在fori中修改集合,不会
- 2024-10-15【STL】模拟实现list
目录list需要实现的接口结点类的创建迭代器类的实现构造函数++运算符的重载--运算符的重载!=运算符重载和==运算符重载operator*operator->list的模拟实现构造函数拷贝构造函数 赋值运算符重载函数析构函数迭代器相关函数begin和endfront和backpush_front
- 2024-10-14java中如何在集合遍历过程中删除元素(5种方法对比、案例、常见的错误及其后果)
在Java开发中,集合遍历过程中删除元素是一个常见但容易出错的操作。不同的集合类型(如ArrayList、HashSet)有不同的处理方式,而错误使用则可能导致ConcurrentModificationException异常。本文将全面分析该问题的根源,提供最佳实践、对比不同方法,并通过案例展示具体实现。一、问
- 2024-10-13Java中的Iterator接口,以及HashSet和TreeSet
在Java编程中,`Iterator`接口是一个非常重要的概念,它为我们提供了一种统一且方便的方式来遍历集合(如`List`、`Set`、`Map`等数据结构中的元素,不过遍历`Map`时稍显特殊,通常是遍历其键值对的集合视图)。##一、Iterator接口的定义与方法`Iterator`接口位于`java.util`包中,它定义
- 2024-10-10C++——模拟实现list
1.初步实现结点和链表namespacejxy{ template<classT> structlist_node { T_data; list_node<T>*_prev; list_node<T>*_next; list_node(constT&x=T()) :_data(x) ,_prev(nullptr) ,_next(nullptr) {} }; template<cla
- 2024-10-01快速排序算法及多线程试验
1)快速排序算法算法实现:选定一个起点/终点位置上的数A小于数A的放在A左侧,大于的放在右侧对A左侧和右侧数组递归的执行步骤2//分区函数template<typenameT>intpartition(Tarr[],intlength){ if(length<=1) return1; inti=1; intj=length-1; //se
- 2024-10-01【C++】set详解