1
typing 2013-09-16 18:22:22 +08:00 2
这是练习作品么?
有一些建议: 1. 复杂度. 目前是O(n), 试试看能不能更快. 2. 有时候operator[]只是提领操作, 尤其对于const dict. 所以operator[]是不是提供一个const版本更好. 3. (这一点我也不太清楚, 需要你自己查证) 一般来说.h里面的函数都要inline, 有两种方法可以达到: 直接在class体内定义; 或者自己手动加inline. 目前这样子会导致函数重复定义(在.h包含多次的情况下) 4. 承接上一条. 一般.h头部需要加上#ifdef那样的预编译指令, 防治多次包含的情况. 5. assignment operator 一般都会返回一个const reference. 这只是惯例, 并不是错误. 6. 我想你需要写一些注释来阐明你对拷贝所使用的策略.(deep or shallow, reference or hold) 7. 你可以看看STL中map的写法, 会有很大帮助. |
2
typing 2013-09-16 18:25:45 +08:00 1
再补充一下:
8. 不要在.h的全局空间using; 这样会导致std::string暴露给所有使用这个.h的编译单元. |
3
zorceta OP @typing
确实是练习 C++没有深入学习和大量练习 只是粗读了一遍Premier Plus O(1)看起来好有难度的样子... const版本,重复定义和std::string是因为手机上敲的没考虑周全 拷贝策略这么高深的东西...在所有内置类型写完后会加上的 关于std::map,我是因为Premier Plus上map的范例都是同类型赋值,想写个类似Python的dict.会看的. 非常感谢你的长回复.对我很有启发^_^ |
4
zorceta OP 上一回复O(1)请无视
|