找实习历程   迈入大三,我逐渐意识到实习的重要性,便也计划着在期末考试完之后开始准备简历和面试相关的内容。奈何考完试已经一月五号了,然后填写简历,准备面试技巧以及拍证件照等事情又拖了好几天,再加上寒假实习一般是在去年十一二月份机会比较多一些,这个时间点简直是debuff拉满了,还有一点就是,我自己本身学历不占优势,学的还是C方向。   投简历的第一天,大部分都是已读不回,我逐渐意识到了问题的严重性,我开始怀疑自己当初的选择,怀疑自己的实力。于是我赶紧上网找对策,如何改简历,如何平稳心态,相当于给自己打了一针镇静剂。后来我也明白了,现在这个行业,不少优秀的人也是已读不回,更何况是我。于是第一天...

  EC73qDgVNYjz   2024年02月19日   47   0   0 求职面试

  说起模板元编程,估计不少人的第一反应都是充斥着各种递归的奇技淫巧,没错,这次我们就来对模板元这种屠龙之术进行初步窥探,看看能玩出什么花样出来。   小试牛刀 template<typename_Tp,typename...args> structget_size{ staticconstexprstd::size_tvalue=get_size<args...>::value+1; }; template<typename_Tp> structget_size<_Tp>{ staticconstexprstd::size_tval...

  EC73qDgVNYjz   2024年01月04日   12   0   0 C++

  C作为一门静态类型语言,是需要程序员声明变量类型的。然而来到了C11,auto的诞生使得变量声明变得及为方便,尤其是对于比较长的模板类型,auto一定程度上为代码编写者减轻了负担。到了C23,突然来了个新特性:auto{x}/auto(x),这又是个什么东西,它的motivation又是什么?     首先这是一个中国小伙为C23作出的贡献,他是一位在美国工作的engineering,这是他的主页。    到底解决了什么问题?   来看看这个函数。 voidmy_erase(auto&x){ std::erase(x,x.front()); }   假如我们传入一个ve...

  EC73qDgVNYjz   2023年12月29日   12   0   0 C++

  学算法阶段时不时会遇到一些递归的应用场景,例如DFS,二叉树等相关的题目,递归常常能大展身手。不过有意思的一件事情是,若我们把一些本该迭代的算法改成递归实现,会是什么样的情形。   这是一个很简单的矩阵加法的例子。 voidmatrixAdd(conststd::vector<std::vector<int>>&a, conststd::vector<std::vector<int>>&b, std::vector<std::vector<int>>&c) { intn1=a.size(),m1...

  EC73qDgVNYjz   2023年12月22日   83   0   0 算法与数据结构

  或许你早已习惯了用printf来调试,亦或许你习惯了用IDE/GDB来调试。最近学习之余,发现了一个代码可视化的网站,它支持Python,C,Java还有Javascript语言,其中Python支持到3.11,C甚至支持部分C20的特性!网站在这(https://pythontutor.com/render.htmlmode=edit)我们来看看效果叭   页面比较简洁,只需要输入我们想要可视化的代码,然后点击VisualizeExecution便可。        若想单步调试,可以点击Next,Prev是回退,Last是直接一步到位,输出最后结果并且对相应的数据进行可视化,Firs...

  EC73qDgVNYjz   2023年12月12日   47   0   0 其他技术区

  在此之前,先来回顾元编程当中的一个重要概念。 template<typename_Tp,_Tp__v> structintegral_constant { staticconstexpr_Tpvalue=__v; typedef_Tpvalue_type; typedefintegral_constant<_Tp,__v>type; constexproperatorvalue_type()constnoexcept{returnvalue;} if__cplusplus>201103L define__cpp_lib_integral_constant_c...

  EC73qDgVNYjz   2023年12月09日   15   0   0 C++

GenericTypesofRanges   类型萃取从字面意思上来说其实就是帮助我们挑选某个对象的类型,筛选特定的对象来做特定的事。可以先来回顾一下以前的写法。 include<vector> include<iterator> intmain(){ std::vectorv{1,2,3}; usingiterator_type=std::vector<int>::iterator; usingdifference_type=std::iterator_traits<iterator_type>::difference_type; usin...

  EC73qDgVNYjz   2023年12月03日   15   0   0 C++

usingforEnumerationValues   对比一下C20前后的区别: enumclassState{ open, progress, done=9 }; //BeforeC20 voidprint(States){ switch(s){ caseState::open: std::cout<<"open\n"; break; caseState::done: std::cout<<"done\n"; break; caseState::progress: std::cout<<"progress\n"; break; default: asse...

  EC73qDgVNYjz   2023年12月01日   15   0   0 C++

  sklearn是一个开源的机器学习库,支持不同种类的机器学习算法,并且提供了许多质量良好的数据集。假如我们想要得到一组环形数据集,借助sklearn的包很轻易就可以实现,不过换个角度思考,我们自己动手是否也可以生成一组数据,使之在散点图上环状分布;借助C的random头文件以及一点高中数学知识,我们很快也可以打造属于自己的数据集。   简单回顾一下,ρ与x和y之间的关系,y=ρsin(θ),x=ρcos(θ)。这是第一象限的情况,对于其它象限,只需要注意角度和符号的关系便可。 include<iostream> include<fstream> include&l...

  EC73qDgVNYjz   2023年11月24日   18   0   0 机器学习

  说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Pooling在中文当中的意思是“池化”,在神经网络当中非常常见,通常用的比较多的一种是MaxPooling,具体操作如下图:   结合图像理解,相信你也会大概明白其中的本意。不过Pooling并不是只可以选取2x2的窗口大小,即便是3x3,5x5等等没问题,步长(Stride)也是一个道理。除了在神经网络方面,Pooling为图片打马赛克也是可以取得不错的效果,结合几个例子看看。   我们可以用MaxPooling先看看效果如何:   MinPooling和AveragePooling的操作也差不多,只不过把对应的操作函数...

  EC73qDgVNYjz   2023年11月19日   30   0   0 算法与数据结构

  大家都知道队列是可以用数组来模拟的,可以先开辟一段定长的数组空间,然后分别使用两个变量head和tail来代指队列的头和尾,从而维护整个队列,相信到这里大家都比较熟悉。不过这种做法是有弊端的,比如说下图这种情况   假设经过不断地增删元素,Head和Tail已经来到了数组最后两个位置,这时候整个队列中只有两个元素,并且我们也不能再增加元素了,因为已经到达了容量的上限。然而,这时候前面一大片连续空间就造成了浪费。因此我们重新设想一下   这是另外一种构思,此时队列当中存有三个元素,那么该怎么实现呢? defineMAXSIZE(1<<16) template<type...

  EC73qDgVNYjz   2023年11月12日   15   0   0 算法与数据结构

  C11起,引入了基于范围的for循环这一特性,有什么好处呢?它有时可以大大地简化遍历容器的操作,比如说STL的vector。 std::vectorv{1,2,3}; std::vector<int>::iteratorit=begin(v); for(;it!=end(v);it) std::cout<<it<<'\n';   这是使用了迭代器的写法,这时候我们的C11的for循环就可以大展身手了。 std::vectorv{1,2,3}; for(constauto&item:v) std::cout<<item<&lt...

  EC73qDgVNYjz   2023年11月12日   30   0   0 C++

  对于一个给定的数组,若要查找当中是否包含某个值,传统的方法是遍历数组中的每一个元素,如果找到则返回。如果学习过数据结构,也可以立马想到用哈希表来存储,哈希表的查找性能优异,一般可以达到O(1)的时间复杂度,在最坏情况下也有可能达到O(n)的复杂度。但是今天,我将带来一种有意思的查找方式,也就是通过随机数来对数组进行划分。这种方式运用到了分治的思想,每次随机生成一个下标,然后判断该下标的元素是否等于目标值,如果不等于,则对该下标两边的元素进行递归查找,之后每一次划分的下标也是基于随机数生成。说起来比较抽象,我们来看看代码。 boolRandomFind(conststd::vector&lt...

  EC73qDgVNYjz   2023年11月05日   48   0   0 算法与数据结构

  假如我有一个需求,就是如果传入的参数是int类型,我就输出int类型,否则就输出T。很显然,根据模板的基础知识,我们可以这么写 template<classT> voidf(T){ std::cout<<"T\n"; } template<> voidf(int){ std::cout<<"int\n"; }   除了这样写,还有别的写法吗。我们可以思考一下.................这里我们其实可以用std::enable_if_t来实现,它相当于给std::enable_if的type类型起了一个别名,我们先看怎么写。 templ...

  EC73qDgVNYjz   2023年11月02日   20   0   0 C++

设计一个不能被using的对象   在实际开发中为了避免命名空间污染,一般都不会usingnamespacestd。但是如果一个对象写起来比较复杂,用using能大幅度地简化操作。现在假设我们要设计一个函数,它在一个作用域里面,使用它只能以A::B::C()这种形式。思考一下,如果我们放在命名空间下,是可以被using简化的。我们不妨可以试试设计一个结构体。 classA{ public: staticvoidhello(){ std::cout<<"HelloWorld\n"; } staticvoidf(){ std::cout<<"GoodbyeWorld\n"...

  EC73qDgVNYjz   2023年11月02日   44   0   0 C++

xsimd简介   xsimd是C的一个开源simd库,实现了对常见simd指令的封装,从而使得simd的操作更为简单。接下来先从两个简单的例子来入门xsimd。 voidaverage(conststd::vector<double>&v1,conststd::vector<double>&v2,std::vector<double>&v){ intn=v.size(); intsize=xsimd::batch<double,xsimd::avx>::size; intloop=nn%size; for(inti=0...

  EC73qDgVNYjz   2023年11月02日   41   0   0 C++

题目大意   有红绿蓝三种颜色,三种颜色当中任意两个颜色混合都可以产生出一个新的颜色(然而混合产生的颜色不能与任何其它的颜色进行混合)。输入三个整数,分别代表红色,绿色,蓝色的颜色个数(每次混合各消耗一个颜色数目),求出能获得的最大颜色数量。   思路   举几个样例找找规律。比如说(1,1,0),原本有两种颜色,如果混合后就只剩下一种颜色;还有(1,2,0)这种情况,混合后还是两种颜色,数目没有发生变化。所以想法是不和数目为1的颜色混合(因为混合后数目不变,甚至可能减少)。注意要降序排序,结合代码理解这两个的区别(5,2,2)和(2,2,5)。   代码 voidsolv...

  EC73qDgVNYjz   2023年11月01日   33   0   0 算法与数据结构
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~