A
这周在leetcode上做了一道判断数字是否是回文数,第一想法是将数字全部反转与原数字进行对比,如果相等则是回文数;
第二想法是可以从中间对折取一半的数字。比如,如果数字长度为偶数,则将123321分为123和321,将321取反再与123对比;如果是奇数,则将1234321分为123和4321->1234,将123与1234/10对比。
R
读了一篇关于树莓派3b+控制串行舵机的文章,文中对于树莓派及各模块的连接叙述较为清晰,讲述了如何进行通信、 舵机初始化 、 碰撞传感器 、电压范围和机器视觉系统。寝室有树莓派,有时间想在网上找舵机和程序试一试。
T
vector
1.1简介
vector可以看成是一种可以存放各种类型对象的容器,简单地说,vector是一个能够存放任意类型的动态数组。
在很多时候,类中二维数组的维度往往无法提前知道,因此需要动态地分配空间。
方法① 使用new运算符,但是操作不当往往会造成内存溢出/泄漏。
方法② 使用STL的vector。
1.2注意事项
(1)如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低;
(2)Vector作为函数的参数或者返回值时,需要注意它的写法。
double Distance(vector<int>&a, vector<int>&b) 其中的“&”绝对不能少
1.3 例子
在一个类中有一个Find(int target, vector > array)函数,其中的形参vector<vector<int> >array表达的是array是一个二维的int型的vector(实际上相当于一个二维数组)。
在vector>中,因为vector是一个容器,最外层的vector容器中放着更小的vector,而里层的vector里面放的是int型的数字。所以我们首先要对里层的vector容器赋值,然后再把里层的vector作为元素插入到外层的vector中。
基本操作:
(1)头文件#include<vector>.
(2)创建vector对象,vector<int> vec;
(3)尾部插入数字:vec.push_back(a);
(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。
(5)使用迭代器访问元素.
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;
(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(7)删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
(8)向量大小:vec.size();
(9)清空:vec.clear();
总之,将vecter当做可存放各种类型对象的数组,再按照基本操作在实践中运用它,就可以了。要注意的一点就是vector的元素不仅仅可以是int,double,string,还可以是结构体,但是结构体要定义为全局的,否则会出错。
S
分享一篇关于辩证性分析抗压力和恢复力(弹性结构)在职业生涯中的优势和劣势的文章The Construct of Resilience: A Critical Evaluation and Guidelines for Future Work,我们一般都觉得经历过重大挫折还能东山再起并维持个体的积极适应的人会比之前拥有更强的潜力,但是这种弹性往往不稳定,我们要排除一些带有陷阱的方法看待它。