找回密码
 FreeOZ用户注册
楼主: 四香油饼
打印 上一主题 下一主题

[论坛技术] 我的第一个c++程序

[复制链接]
31#
发表于 9-2-2010 10:03:40 | 只看该作者
原帖由 薛定谔猫 于 9-2-2010 00:44 发表

这段代码挺干净的,就是这点比较奇怪:

const void set_classrange(const std::string range);            //  Set the class to be searched
        const void set_searchitem(const std::string item);    ...

说实话,我不是太明白这里,这是某一次此大牛在他的code里面写过,但是我自己也想不清楚。丫神出鬼没的。
回复  

使用道具 举报

32#
发表于 9-2-2010 10:06:14 | 只看该作者
还有,建议大家开始使用boost,此库很有可能是下一代c++的标准库的原型之一。而且功能非常强大。唯一的缺点。。。就是文档写的太差!巨差!

评分

参与人数 1威望 +49 收起 理由
四香油饼 + 49 干啥用的?

查看全部评分

回复  

使用道具 举报

33#
发表于 9-2-2010 11:07:44 | 只看该作者
nicta几楼?

评分

参与人数 1威望 +49 收起 理由
四香油饼 + 49 看来你们两个一个公司的啊?

查看全部评分

回复  

使用道具 举报

34#
发表于 9-2-2010 11:29:37 | 只看该作者
第一个程序就些的这么好,天才呀.

评分

参与人数 1威望 +49 收起 理由
四香油饼 + 49 见笑了

查看全部评分

回复  

使用道具 举报

35#
发表于 9-2-2010 12:05:43 | 只看该作者
比偶的强。
偶第一个程序就输出
“HELLO WORLD”
回复  

使用道具 举报

36#
 楼主| 发表于 9-2-2010 12:22:10 | 只看该作者
原帖由 coolmate 于 9-2-2010 10:03 发表

说实话,我不是太明白这里,这是某一次此大牛在他的code里面写过,但是我自己也想不清楚。丫神出鬼没的。


会不会只是为了好看?或者为了风格上的统一,而没有实际作用

比如我看thinking in c++书里说对于函数的返回值,如果是一个类,则都应该加上const,防止其作为lvalue,而对于内部的数据类型int一类的,加上和不加没什么区别,只会给读程序人造成困惑,所以一般不加

会不会这个大拿就是想这样好看点? 和 const int fun() 一样,弄个 const void fun()出来?他写的程序如果返回值是int也会加 const吗?
回复  

使用道具 举报

37#
发表于 9-2-2010 12:38:55 | 只看该作者
第一个程序不应该都是hello,world吗?

评分

参与人数 1威望 +49 收起 理由
四香油饼 + 49 第一个有用的程序:)

查看全部评分

回复  

使用道具 举报

38#
发表于 9-2-2010 13:05:26 | 只看该作者
继续学习
回复  

使用道具 举报

39#
发表于 9-2-2010 13:06:23 | 只看该作者
原帖由 coolmate 于 9-2-2010 10:03 发表

说实话,我不是太明白这里,这是某一次此大牛在他的code里面写过,但是我自己也想不清楚。丫神出鬼没的。


呵呵,是不是大牛笔误阿?你去问一下阿。
coredump说boost 没做到binary compatible.呵呵。
回复  

使用道具 举报

40#
发表于 9-2-2010 13:24:45 | 只看该作者
原帖由 klux 于 9-2-2010 11:07 发表
nicta几楼?

看来你也是nicta的?是不是在sydney lab的学生?我不是sydney lab的。
回复  

使用道具 举报

41#
发表于 9-2-2010 13:28:00 | 只看该作者
油饼现在还不用管boost,那是个实现很多fancy功能的非常巨大的库。

boost一直在改,现在的新版有了长足的进步。举个例子,1.6的spirit,要20行的rule,现在用新的spirit只要3行。当然,不是我写,是那个牛人干的。

[ 本帖最后由 coolmate 于 9-2-2010 15:27 编辑 ]
回复  

使用道具 举报

42#
发表于 9-2-2010 15:15:43 | 只看该作者
coolmate给个学习boost 的roadmap吧。多谢阿。
回复  

使用道具 举报

43#
发表于 9-2-2010 15:26:34 | 只看该作者
boost其实不是一个语言,而是c++的一套库。所有,学习的话,个人感觉,没有一定之规。

也确实没有一个roadmap的东西。开始要了解的话,就从它的官方网页开始:
http://www.boost.org/doc/libs/1_ ... _started/index.html

然后你用到什么方面的东西,就去看下面每个不同的库的文档。比如说,我用到了和string有关的东西我就去看看algorithm库。parser方面的,我就要了解tokenizer和spirit,如果是文件和目录有关的,我就要用filesystem。等等。

现有最新版1.42,不过我在用1.38,暂时没必要更新。

顺便问一下,有人用Qt做GUI么?我也了解一些。
回复  

使用道具 举报

44#
 楼主| 发表于 9-2-2010 17:10:53 | 只看该作者
原帖由 coolmate 于 9-2-2010 15:26 发表
boost其实不是一个语言,而是c++的一套库。所有,学习的话,个人感觉,没有一定之规。

也确实没有一个roadmap的东西。开始要了解的话,就从它的官方网页开始:
http://www.boost.org/doc/libs/1_42_0/more/getti ...


老乞丐就是靠qt吃饭的。俺下一步也准备学习qt了
回复  

使用道具 举报

45#
发表于 9-2-2010 17:18:07 | 只看该作者
多谢coolmate。
coredump是Qt高手。
我刚刚开始用Qt,现在只有点了解。它有一套signal-slot机制,甚至可以用在console上。所以整个程序都可以搞成event-driven.
接口都比较好用,文档齐全。基本是个框架的意思,什么多有。基本用不到boost。效率我就不知道了。
别的等coredump来说吧。
回复  

使用道具 举报

46#
发表于 9-2-2010 17:23:32 | 只看该作者
谁知道我每次可以给人最多评多少分?
回复  

使用道具 举报

47#
发表于 9-2-2010 18:13:58 | 只看该作者
C++是好东西
回复  

使用道具 举报

48#
发表于 9-2-2010 21:25:37 | 只看该作者
一上手就200行 ,牛。

后面的汇编看不懂
回复  

使用道具 举报

49#
发表于 9-2-2010 21:52:51 | 只看该作者
原帖由 GPS 于 9-2-2010 17:18 发表
多谢coolmate。
coredump是Qt高手。
我刚刚开始用Qt,现在只有点了解。它有一套signal-slot机制,甚至可以用在console上。所以整个程序都可以搞成event-driven.
接口都比较好用,文档齐全。基本是个框架的意思,什 ...

Qt的好处就是简单易用,widget比较齐全,而且也有很强的技术。最可贵的就是文档整齐易读,例子丰富,涵盖广阔。

大部分时间,Qt只是做为GUI的产生器,真正的运算还是要通过普通的C++code来完成。所以,效率并不是一个大问题。
回复  

使用道具 举报

50#
发表于 9-2-2010 21:53:41 | 只看该作者
原帖由 kaile 于 9-2-2010 21:25 发表
一上手就200行 ,牛。

后面的汇编看不懂

我一向景仰玩汇编的tz。哈哈。我看不懂
回复  

使用道具 举报

51#
 楼主| 发表于 9-2-2010 21:58:21 | 只看该作者
原帖由 kaile 于 9-2-2010 21:25 发表
一上手就200行 ,牛。

后面的汇编看不懂


那汇编是我随手瞎编的,只是为了验证程序能工作:)
回复  

使用道具 举报

52#
发表于 9-2-2010 22:30:25 | 只看该作者
另外还有一个问题,不是关于coolmate的程序的,是一般编程的问题,如果有一组没规律的数,现在想检验另外一个数是否与这组数中的一个相等,一定要用循环的办法全部比较一遍吗?有没有什么好的办法??

这个是一个常见的算法问题,你需要先把数进行排序,然后再做查找. 排序有排序的算法,最简单的就是冒泡法.
查找比较常用的是二分查找. 楼主要想学编程的话可以看看数据结构以及算法方面的书,数据结构+算法==程序.
回复  

使用道具 举报

53#
发表于 9-2-2010 22:48:49 | 只看该作者
原帖由 coolmate 于 9-2-2010 10:03 发表

说实话,我不是太明白这里,这是某一次此大牛在他的code里面写过,但是我自己也想不清楚。丫神出鬼没的。

你是不是看花眼了,如果大牛写的是const void*就好理解了
回复  

使用道具 举报

54#
发表于 10-2-2010 10:28:23 | 只看该作者
原帖由 薛定谔猫 于 9-2-2010 22:48 发表

你是不是看花眼了,如果大牛写的是const void*就好理解了

嘿嘿,也许吧。那家伙对自己的源码可是很保护的,很难看到。呵呵。
回复  

使用道具 举报

55#
发表于 10-2-2010 12:44:17 | 只看该作者
原帖由 coolmate 于 10-2-2010 10:28 发表

嘿嘿,也许吧。那家伙对自己的源码可是很保护的,很难看到。呵呵。


一起干的还要藏着,估计也不是高不可攀。不是怕你超了他,就是怕你找他的错,告诉他const void 很没用的。哈哈。

评分

参与人数 1威望 +5 收起 理由
薛定谔猫 + 5 我很赞同!

查看全部评分

回复  

使用道具 举报

56#
发表于 15-2-2010 14:19:44 | 只看该作者
原帖由 ubuntuhk 于 8-2-2010 00:33 发表
程序写得相当工整,赞一下

一点小建议:
1.可以把“using namespace std;”放到instruction.h里面,这样在instrction.h里面就可以不用引用“std::"了。

2.如果有比较的时候,可以把变量写在后面, ...


我不支持使用using namespace std; std::这么短,加上也不碍事。免得其他库有string和map什么的,冲突了。
回复  

使用道具 举报

57#
发表于 15-2-2010 15:26:44 | 只看该作者
不面向对象,直接用C拉
回复  

使用道具 举报

58#
发表于 16-2-2010 10:05:47 | 只看该作者
原帖由 coolmate 于 9-2-2010 13:24 发表

看来你也是nicta的?是不是在sydney lab的学生?我不是sydney lab的。


堪培拉的?
回复  

使用道具 举报

59#
发表于 16-2-2010 13:40:33 | 只看该作者
本帖最后由 coolmate 于 12-9-2016 01:04 编辑

......
回复  

使用道具 举报

60#
发表于 16-2-2010 15:23:47 | 只看该作者
本帖最后由 coolmate 于 12-9-2016 01:04 编辑

忘记了一个重要的东西:this

一定要记得对于类的成员,坚持使用this来标记,比如:
  1. void a::b::generator_cpp :: feed(std::vector<a::b::global::code_segment> input)
  2. {
  3.     //  clear existing source
  4.     this->source_.clear();
  5.     //  copy all content from input to source
  6.     this->source_.assign(input.begin(), input.end());
  7.     this->source_pointer_ = this->source_.begin();
  8. }
复制代码

评分

参与人数 1威望 +20 收起 理由
GPS + 20 你太有才了!

查看全部评分

回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+11, 13-12-2024 07:54 , Processed in 0.038515 second(s), 46 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表