C_and_CPP 板


LINE

原po gr网友在这里问过三四次问题,全都没有善用标题, 不是写个「新手问题」,就是只有「[问题]」。 建议他以後要在标题中明确而扼要的点出问题的内容。 这是基本的网路礼仪,也是一种良好的思考训练。 由於以下所写,已经和原来的问题渐行渐远,所以我 另立一个标题。 ※ 引述《gocpp (cpp)》之铭言: : 看情况啦。array 还是必要的,否则早就丢掉的。 : 以我的经验来说,除非是写短短的测试程式,或有极端效能的要求, : 一般是很少使用 array,更常用的是 vector。 : array 的确有很多不安全的地方,但我常使用 vector 的更重要理由 : 倒不是因为 array 不安全,而是我觉得它不太方便。 [中略] : 当然,这些都是取巧的小手段,不值一哂。不过若以比较高阶的观点来 : 看,直接操作 array 还是相当低阶的动作,需要比较多的专注力,虽然 : 不能忽略这种精确的训练,但大多时候,我希望 C++ 的编程风格,除了 : 讲求 C 的精确和高效之外,也能像 Basic 一样「简单」。基於这个原 : 则,在 C++ 中我的确是倾向少用 array 的。如果写 C 的话,就只好乖 : 一点,有什麽就用什麽。 array 与 vector 的取舍,有一点重要考量,就是元素个数 是否会在程式执行过程中变来变去。会变的话,通常都应该 舍 array 而取 vector。 C 时代,透过 malloc()/realloc() 来操作动态 array 的烦琐而易出错的做法,到了标准的 C++ 时代,就该用会自动帮我们搞定的 vector 来取代了。 至於若元素个数固定不变的话,若是想要赶快写出一个正确 而可用的 C++ 程式,也是可以用 vector。我写 ACM 题目的 浅薄经验,一开始常常用 vector 写,往往很快就可写出一 个被接受的程式。可是当我一看到执行所耗费的时间,和别 人的速度一比,马上 Orz... 於是又改用原始的 array 来做, 接着都会多花上许多时间来除错,最後才弄得出一个正确而 跑得比较快的程式来。直接操作 array 真的是太低阶而易出错。 这也是为什麽一些 C++ 大老会劝人:若是本来的目标就是 C++ 的人,直接学 C++ 就对了,而不要先学 C,再来学 C++ 的部份 原因。而且也在 C++ 教学书很前面的地方,就开始适量的引进 C++ standard library 来让学习者使用,以避免低阶操作的种种 困扰。 : 在 C99 中,array 在初始化时,已经可以使用变量来初始它的规模,这使 : 得 array 的使用更加便利。 : 不过 C++ 并不支援这种功能,因为 C++ Standard 已经有 vector 等容器 : 了,可以不需要类似 C99 的 array。 就 C++ 来讲,当然有了强大的 vector,就不会想在核心语言层次 对 array 动手脚了。然而,就 C 的立场,新增这种执行时期才决 定元素个数的 array 很可能的确有必要。Stroustrup 曾感慨说, 「C 标准」的增修未能和 C++ 密切配合,导致 C99 和 C++ 更难 相容了。他甚至希望有朝一日,C 和 C++ 能够合一。我无知的想法 是觉得这个不太可能啦。C++ 真的太复杂,要宣称 Our compiler is C++ standard-comformant 有多难呀!随便一个硬体平台,要 有个 C compiler,相形之下,容易得太多了。一旦 C 和 C++ 合一, 到时还不是又要搞个 C++ subset 出来,让一大堆 embedded system 来用。其实目前就有这种东西,只是很乱。C 和 C++ 合一,恐怕 会更乱吧 :-) --
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: khoguan 来自: 220.130.208.168 (08/10 15:24)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP