Month: April 2013

On 2 dimensional array of C++

I was asked about this today. In practice, I rarely use 2-dimensional array, instead I use vector of vectors. To allocate a 2-d array on the stack, a C-style array is int d[2][3]; Then to refer to an element it is like d[i][j]; To make a dynamical allocation, one can NOT write his code like

Nested Array in Bash

用了Bash这么久,才知道Bash支持Array。但是却缺乏对嵌套数组,或者是多维数组的支持。自己的实验里面需要用到结构性的数据,这样看起来或者改起来会比较方便,而且因为这部分是用来处理实验结果,需要经常修改,所以不适合放到C++里面去写。 因此就有了需要Bash支持嵌套数组的需求。 最终的解决方法不是很漂亮,但是也足够我自己用了。这个想法的出发点是这样的: Bash在处理数组的时候会用到IFS这个环境变量。比如这样一段字符 Li,Age*1;Weight*2;Height*3;Friends*Sun^Wang Wang,Age*11;Weight*12;Height*13;Friends*Li^Sun 如果IFS是空格,我们就可以得到两个元素 Li,Age*1;Weight*2;Height*3;Friends*Sun^Wang Wang,Age*11;Weight*12;Height*13;Friends*Li^Sun 如果IFS是分号(;),我们可以得到另一个数组 Li,Age*1 Weight*2 Height*3 Friends*Sun^Wang Wang,Age*11 Weight*12 Height*13 Friends*Li^Sun 也就是说我们可以通过指定不同的IFS让一段字符成为不同的数组。 所以,我们可以通过对每一层使用不同的IFS来表达一个嵌套数组。比如上面那段字符,我们用不同的IFS字符,先用空格( ),再用逗号(,),之后用分号(;)…… 如此做下去就可以达到层层盘剥的效果(-_-!) 在实际使用中,我们只要保证每一层用到的IFS不会在数组内容中出现就行了。 为了能够生成那样一段字符,我们自然需要一些函数做辅助。 具体的代码放到Github上了。目前这个方法虽然有效,但是使用起来仍然不够简洁,看起来如果找不到更好的Bash下的解决方法,就得考虑换用一种20世纪的脚本语言了… Github: Nested-Array-Bash

最近

已经好久没有写东西了,三言两语也是一种存在。前两天把文章投出去,这个学期也快要结束了。 真是充实的一个学期,短短不到三个月的时间里:mm过来,生活状态上带来了不小的变化,体重上来好几斤;第一篇文章被接收,总算有了Publication,感觉挺欣慰;之后是自己的PhD资格考试,严肃地讲了一次自己的工作;接着接着就是做新的文章;最后就是还没有结束的TA,第一次做助教,给小本上复习课感觉压力山大。 之后做什么呢?要做新的东西,要去学开车,暑假要去实习。很是期待暑假的实习,可以见见同学,可以看看另外一种生活状态。埋着头,慢慢走吧。忽然很想听崔健。