火车

五一期间折腾火车票时认识了一个火车爱好者,才知道这世上还有火车迷这一爱好。于是乎去转了转海子铁路网论坛,发现火车还真是个挺有意思的东东。MS我一直比较喜欢所谓“有技术含量”的东东,看看这些不同的车头车底,加上各种术语,还有车迷口中对火车的“专用名词”,嗯,足够有“技术含量”了也足够吸引我了。

爱好火车有个很实用的地方就是出行可以比较方便,因为车迷总能在各种条件下找到一个相对最合理的乘车方法。比如南京到北京,Z50/Z6对于不坐飞机的有钱人是不二的选择,但对于我等穷人,最实惠的车应该是T66硬卧,但T66的票不好买,到点又比较晚,所以T736到扬州转个Z30硬卧成为了最佳的备选方案。开点到点都不错,T736是BSP的车底,舒适度很好,Z30条件比T66强,总价格比Z50便宜四分之一,在南京把票买好,到扬州后过天桥上一站台直接上车,也不折腾。(不过今年4月18号“六提”之后T736改成T782,时间上有点悬乎了,一旦晚点,可能就得等着Z30开出后才能到进扬州了,此现象车迷称为“被猪踩了”,“猪”是指直特列车或它的DF11-G车头,“踩”就是指“待避”也就是等车)

今天看到一则新闻,也是讲中转车的好处,不过不是省钱,是省时间。可惜可怜的记者在车迷眼中成了笑柄一把,更可怜我是在看了三遍以后才看出其中的漏洞的,你能看出来吗(这个漏洞其实跟火车关系不是太大)?

======

昨日,记者从南昌火车站获悉,南昌火车站已开售异地D字头高速列车火车票,时限在20天内。这意味着,市民可在南昌购买上海开往南京、北京、苏州、镇江等地高速列车车票。

记者了解到,以往,市民如果要乘火车去南京的话,通常是乘坐2240次南昌—南京西的普通快车,14:29从南昌站发出,次日7:38分抵达南京,总耗时要17个小时,非常漫长。而如果乘客购买异地动车组车票的话,则可节省10个多小时,可在南昌火车站购买南昌—上海南的D92次列车和上海—南京的D434次列车车票。这样的话,早上8:34分从南昌站出发,13:58分到达上海南站,14:33分再从上海站出发,16:53分抵达南京站,总耗时8.5个小时,比2240次节省了近10个小时。

如何在C++中动态分配二维数组

这个问题应该是我在CSDN蹭分时回答次数比较多的一个问题了,我的回答一般是三种方法:(1)用vector的vector,(2)先分配一个指针数组,然后让里面每一个指针再指向一个数组,这个做法的好处是访问数组元素时比较直观,可以用a[x][y]这样的写法,缺点是它相当于C#中的一个锯齿数组,内存空间不连续。(3)直接分配一个x*y大小的一维数组,这样保证空间是连续的,但访问数组元素不直观。对于我这个“经典”回答,我那时还一直是挺得意的,至少从蹭分的角度来看,这样回答还是很有效的。

今天在ChinaUnix论坛闲逛时看到一个贴子,再次证明了我在C++方面才疏学浅。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void **darray_new(int row, int col, int size)
{
void **arr;
arr = (void **) malloc(sizeof(void *) * row + size * row * col);
if (arr != NULL)
{
void *head;
head = (void *) arr + sizeof(void *) * row;
memset(arr, 0, sizeof(void *) * row + size * row * col);
while (row--)
arr[row] = head + size * row * col;
}
return arr;
}
void darray_free(void **arr)
{
if (arr != NULL)
free(arr);
}

嗯,连续分配内存,而且可以用a[x][y]的方式来访问!可谓二维数组动态分配的绝妙方法!这段程序是C的,似乎要改成支持对象分配的C++版也不是什么难事(不过估计得用上placement new吧,嗯,需要再思考一下……)。