由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 大家要学习C++11啊, 我觉得C++11很多FEATURE,绝对不输JAVA.
相关主题
(zz)C++11新特性C++的smart pointer注定是个二流的东西
int F::*x = &F::x是什么意思?琢磨了一下c++ smart pointer,发现不能到处用
我老不厚道地说一句,C的工作稳定是假的。什么时候使用c++ smart pointer?
[新手]一直都把C++当Java写,有啥严重不妥?怎么准备一些hardcore C++的interview (转载)
不如各位高手挑个专题讲讲C++11吧Question on C++ Access Control (protected)
问一个defining array 的问题C语言重复定义问题
JAVA的初衷本来就是C++太复杂了,productivity不行请推荐一款windows xp 平台上优秀的C语言编译/编辑器
interview with Ben Klemens, author of 21st Century C问一个volatile和memcpy一起用的问题
相关话题的讨论汇总
话题: c++话题: java话题: pointer话题: ptr话题: smart
进入Programming版参与讨论
1 (共1页)
j******t
发帖数: 788
1
现在很多工作都问了.
l*********s
发帖数: 5409
2
agree.

【在 j******t 的大作中提到】
: 现在很多工作都问了.
s******u
发帖数: 501
3
C++的core language feature绝对大于java啊,只是上手难加上library不够
r*******n
发帖数: 3020
4
问道什么问题

【在 j******t 的大作中提到】
: 现在很多工作都问了.
f******y
发帖数: 2971
5
搞半天那些批C++的人都不知道11呀?

【在 j******t 的大作中提到】
: 现在很多工作都问了.
f******y
发帖数: 2971
6
library是standard里的不多,但third party的不少,一个boost基本什么都包了。现
在c++ committee里的人也意识到应该加强library了,所以11加了不少东西。以后还会
接着加。要说C++的问题是上一次标准更新太慢了,从03到11整整8年。这期间Java推出
了好几个版本了,主要是一直有个大公司专门做。C++的标准更像是一群志愿者的part
time job,所以更新很慢,造成了近期吸引力的下降。

【在 s******u 的大作中提到】
: C++的core language feature绝对大于java啊,只是上手难加上library不够
H**r
发帖数: 10015
7
已经走Java路线的就不用看了
已经走C++路线的必须得关注
j******t
发帖数: 788
8
JAVA和C++代表两种不同的编辑模式, 在未来几十年之内应该会并存.
小百合也有春天, C++11融合了很多JAVA的理念, 用到大伙退休应该没问题.
j******t
发帖数: 788
9
一个猎头打电话问我会不会,我后来恶补了一下,其实如果懂JAVA的话, 很多东西其实就
是借用JAVA的概念, 并不难,而且掌握常用的就可以了.比如
nullpointer,
weak_pnt, unique_pnt and reference pnt
auto
initialize
template argument,
anonymous function
......
大家补充.

【在 r*******n 的大作中提到】
: 问道什么问题
g*****g
发帖数: 34805
10
http://dl.dropboxusercontent.com/u/13100941/C%2B%2B11.pdf
Interesting addition. C++ 11 just grows from an elephant to an mammoth
though. Java is never about feature-rich.
相关主题
问一个defining array 的问题C++的smart pointer注定是个二流的东西
JAVA的初衷本来就是C++太复杂了,productivity不行琢磨了一下c++ smart pointer,发现不能到处用
interview with Ben Klemens, author of 21st Century C什么时候使用c++ smart pointer?
进入Programming版参与讨论
t****t
发帖数: 6806
11
我很好奇的问一下, C++11融合了什么JAVA的理念?
C++11我从draft开始用很久了, 没发现什么JAVA的理念啊.

【在 j******t 的大作中提到】
: JAVA和C++代表两种不同的编辑模式, 在未来几十年之内应该会并存.
: 小百合也有春天, C++11融合了很多JAVA的理念, 用到大伙退休应该没问题.

j******t
发帖数: 788
12
你会JAVA吗?

【在 t****t 的大作中提到】
: 我很好奇的问一下, C++11融合了什么JAVA的理念?
: C++11我从draft开始用很久了, 没发现什么JAVA的理念啊.

t****t
发帖数: 6806
13
一点点.

【在 j******t 的大作中提到】
: 你会JAVA吗?
d****i
发帖数: 4809
14
I still like the traditional way of C++ (C-style C++). If C++11 adds more
syntactic sugars, it doesn't help but hurts itself and makes it more complex
and uglier.

【在 g*****g 的大作中提到】
: http://dl.dropboxusercontent.com/u/13100941/C%2B%2B11.pdf
: Interesting addition. C++ 11 just grows from an elephant to an mammoth
: though. Java is never about feature-rich.

t****t
发帖数: 6806
15
你这单子是说借用java的理念吗? 这里好象都不是java的理念...anonymous function
还算沾边, 但是据我所知java的lambda function出现得比c++要晚.

【在 j******t 的大作中提到】
: 一个猎头打电话问我会不会,我后来恶补了一下,其实如果懂JAVA的话, 很多东西其实就
: 是借用JAVA的概念, 并不难,而且掌握常用的就可以了.比如
: nullpointer,
: weak_pnt, unique_pnt and reference pnt
: auto
: initialize
: template argument,
: anonymous function
: ......
: 大家补充.

t****t
发帖数: 6806
16
C-style C++直接用C就好了, 为什么还要用C++.

complex

【在 d****i 的大作中提到】
: I still like the traditional way of C++ (C-style C++). If C++11 adds more
: syntactic sugars, it doesn't help but hurts itself and makes it more complex
: and uglier.

d****i
发帖数: 4809
17
C++和Java并不存在竞争,两个基本上各自用于不同的领域,和Java竞争的是C#,PHP,
Python,Perl,Ruby,Node等等(都是server-side languages),更主要的是来自JVM上的
Scala,Clojure,Groovy等这些“篡权者”。

【在 j******t 的大作中提到】
: JAVA和C++代表两种不同的编辑模式, 在未来几十年之内应该会并存.
: 小百合也有春天, C++11融合了很多JAVA的理念, 用到大伙退休应该没问题.

d****i
发帖数: 4809
18
你没有明白我的意思,我是指那些新的C++11的语法糖没有什么意思,就用plain old C
++(ANSI C++98)又如何,大型程序照样写的好好的。

【在 t****t 的大作中提到】
: C-style C++直接用C就好了, 为什么还要用C++.
:
: complex

t****t
发帖数: 6806
19
好吧, 我是没明白你说的C-style C++是什么意思. C++和C是两个不同的语言, 在我看
来, 正常C++98的程序不应该叫C-style.
C++11的新功能很多是给library/framework用的, 比如说最重要的variadic template.
我自己写library, 所以用得很爽.

C

【在 d****i 的大作中提到】
: 你没有明白我的意思,我是指那些新的C++11的语法糖没有什么意思,就用plain old C
: ++(ANSI C++98)又如何,大型程序照样写的好好的。

g*****g
发帖数: 34805
20
还是有一些的,诸如规定primitive数据长度,in-class member initializers,
delegating constructors, override, final, explicit cast, for loop, threading
support, future.
当然这些东西不见得是java原创的,只是说理念和一些语法明显能看出从Java借鉴来的。

【在 t****t 的大作中提到】
: 我很好奇的问一下, C++11融合了什么JAVA的理念?
: C++11我从draft开始用很久了, 没发现什么JAVA的理念啊.

相关主题
怎么准备一些hardcore C++的interview (转载)请推荐一款windows xp 平台上优秀的C语言编译/编辑器
Question on C++ Access Control (protected)问一个volatile和memcpy一起用的问题
C语言重复定义问题C++ pointer to function is buggy
进入Programming版参与讨论
j******t
发帖数: 788
21
N哦9~
那个delegate constructor, final overide 就是Java 的东西,smartpointer 也是为
了解决一个跟java比的弱势,lambdas也算。

function

【在 t****t 的大作中提到】
: 你这单子是说借用java的理念吗? 这里好象都不是java的理念...anonymous function
: 还算沾边, 但是据我所知java的lambda function出现得比c++要晚.

j******t
发帖数: 788
22
LOL,多谢帮我回答,上班没时间多写

threading
的。

【在 g*****g 的大作中提到】
: 还是有一些的,诸如规定primitive数据长度,in-class member initializers,
: delegating constructors, override, final, explicit cast, for loop, threading
: support, future.
: 当然这些东西不见得是java原创的,只是说理念和一些语法明显能看出从Java借鉴来的。

j******t
发帖数: 788
23
太有意思了,比如C++11认为不应该直接操作Raw pointer,所以要用smarter pointer,
想想这要形成习惯其实是很大的一个改变。以前java developer就嘲笑c/c++土容易有
内存泄漏,现在要大家直接用smart pointer 问题就解决了。至少我以后会尽量不裸奔了

C

【在 d****i 的大作中提到】
: 你没有明白我的意思,我是指那些新的C++11的语法糖没有什么意思,就用plain old C
: ++(ANSI C++98)又如何,大型程序照样写的好好的。

d****i
发帖数: 4809
24
C++有像Java那样的in-class member initializers了?是不是就是这样的:
class MyClass {
private:
int member1 = 0;
bool member2 = true;
};
如果是这样的话,这是违反C++的常理的,因为C++的类的声明应该出现在头文件中
MyClass.h,头文件中只管声明,不管定义,成员变量的定义应该只在cpp文件中出现,
这个是C++的convention,static const变量除外。

threading
的。

【在 g*****g 的大作中提到】
: 还是有一些的,诸如规定primitive数据长度,in-class member initializers,
: delegating constructors, override, final, explicit cast, for loop, threading
: support, future.
: 当然这些东西不见得是java原创的,只是说理念和一些语法明显能看出从Java借鉴来的。

t****t
发帖数: 6806
25
primitive 数据长度是从C99来的. in-class member initializer和delegating
constructor 这个我确实不太清楚. override/final是从java来的没错, 我能看到的也
就是这个.
explicit cast原来就有, 这次扩展了一下. ranged for loop很难说是从哪里来的.
thread support/future是library, 直接从boost来的. 当然boost可能最初是从java来
的也未可知.

threading
的。

【在 g*****g 的大作中提到】
: 还是有一些的,诸如规定primitive数据长度,in-class member initializers,
: delegating constructors, override, final, explicit cast, for loop, threading
: support, future.
: 当然这些东西不见得是java原创的,只是说理念和一些语法明显能看出从Java借鉴来的。

n*w
发帖数: 3393
26
right. java 8 will have lambda. not release yet.

function

【在 t****t 的大作中提到】
: 你这单子是说借用java的理念吗? 这里好象都不是java的理念...anonymous function
: 还算沾边, 但是据我所知java的lambda function出现得比c++要晚.

t****t
发帖数: 6806
27
smart pointer跟java的是两码事, 你要说曾经讨论过的GC support那还象话, 但是最
后也没通过.
lambda我说了是java晚出的好不好.

【在 j******t 的大作中提到】
: N哦9~
: 那个delegate constructor, final overide 就是Java 的东西,smartpointer 也是为
: 了解决一个跟java比的弱势,lambdas也算。
:
: function

t****t
发帖数: 6806
28
是这样的, 为了multiple ctor的方便, 其实是delegating constructor的变形.

【在 d****i 的大作中提到】
: C++有像Java那样的in-class member initializers了?是不是就是这样的:
: class MyClass {
: private:
: int member1 = 0;
: bool member2 = true;
: };
: 如果是这样的话,这是违反C++的常理的,因为C++的类的声明应该出现在头文件中
: MyClass.h,头文件中只管声明,不管定义,成员变量的定义应该只在cpp文件中出现,
: 这个是C++的convention,static const变量除外。
:

j******t
发帖数: 788
29
不矛盾,你要在声明里定意初始值,传统限制只能定义STATIC,完全是没有必要。
delegator constructor 就是允许一个 instructor调用另一个constructor完成初始化
。而不需要专门写一个initializition method.

【在 d****i 的大作中提到】
: C++有像Java那样的in-class member initializers了?是不是就是这样的:
: class MyClass {
: private:
: int member1 = 0;
: bool member2 = true;
: };
: 如果是这样的话,这是违反C++的常理的,因为C++的类的声明应该出现在头文件中
: MyClass.h,头文件中只管声明,不管定义,成员变量的定义应该只在cpp文件中出现,
: 这个是C++的convention,static const变量除外。
:

g*****g
发帖数: 34805
30
java的匿名内部类,应该是很早就出了的。早期C++应该是靠void*来实现相似的功能。
谁早谁晚我就说不好了。

【在 t****t 的大作中提到】
: smart pointer跟java的是两码事, 你要说曾经讨论过的GC support那还象话, 但是最
: 后也没通过.
: lambda我说了是java晚出的好不好.

相关主题
C++必备书籍推荐int F::*x = &F::x是什么意思?
一个C#使用C++.NET类库的问题我老不厚道地说一句,C的工作稳定是假的。
(zz)C++11新特性[新手]一直都把C++当Java写,有啥严重不妥?
进入Programming版参与讨论
j******t
发帖数: 788
31
当然不是完全相同的技术,但是是为了跟Java竞争搞出来的同样的东西,所以我说是理
念相同。c++不可能引入garbage collector. 我觉得其实11的办法更好。当然需要解决
dependency 的问题。其实相同的技
术很多公司都在用了,现在只是把它标准h化。我没参与过GC surpport讨论,不知道那
是什么

【在 t****t 的大作中提到】
: smart pointer跟java的是两码事, 你要说曾经讨论过的GC support那还象话, 但是最
: 后也没通过.
: lambda我说了是java晚出的好不好.

t****t
发帖数: 6806
32
这理念差得也太远了.

什么

【在 j******t 的大作中提到】
: 当然不是完全相同的技术,但是是为了跟Java竞争搞出来的同样的东西,所以我说是理
: 念相同。c++不可能引入garbage collector. 我觉得其实11的办法更好。当然需要解决
: dependency 的问题。其实相同的技
: 术很多公司都在用了,现在只是把它标准h化。我没参与过GC surpport讨论,不知道那
: 是什么

j******t
发帖数: 788
33
你先回答我一个基本的问题,我说的Java garbage collection为了解决什么问题

【在 t****t 的大作中提到】
: 这理念差得也太远了.
:
: 什么

d****i
发帖数: 4809
34
这个feature还是很不好,C++一直是高举三面大旗得以屹立不倒:
1)对C语言的完全兼容和遵循C的规范和理念
2)对performance下降的零容忍
3)坚持静态类型检查,只用极少量的RTTI这样的
这个in-class member initialization非但违反了C++自己的准则,也违反了C的传统准
则,声明归声明,定义归定义,应该分开。我觉得C++越是想向Java学越是不好,反而
搞得四不像,倒是坚持上述三面大旗更好。C++就是因为一开始就是作为带类的C的扩展
产生的,要是语言feature越搞越多反而不好,最后变个四不像。

【在 t****t 的大作中提到】
: 是这样的, 为了multiple ctor的方便, 其实是delegating constructor的变形.
j******t
发帖数: 788
35
现实是如果不改的dummy smart, 那就没人用了

【在 d****i 的大作中提到】
: 这个feature还是很不好,C++一直是高举三面大旗得以屹立不倒:
: 1)对C语言的完全兼容和遵循C的规范和理念
: 2)对performance下降的零容忍
: 3)坚持静态类型检查,只用极少量的RTTI这样的
: 这个in-class member initialization非但违反了C++自己的准则,也违反了C的传统准
: 则,声明归声明,定义归定义,应该分开。我觉得C++越是想向Java学越是不好,反而
: 搞得四不像,倒是坚持上述三面大旗更好。C++就是因为一开始就是作为带类的C的扩展
: 产生的,要是语言feature越搞越多反而不好,最后变个四不像。

g*****g
发帖数: 34805
36
不觉得C++需要遵守这个原则。在一个函数里C变量必须在开头声明,C++则不然。

【在 d****i 的大作中提到】
: 这个feature还是很不好,C++一直是高举三面大旗得以屹立不倒:
: 1)对C语言的完全兼容和遵循C的规范和理念
: 2)对performance下降的零容忍
: 3)坚持静态类型检查,只用极少量的RTTI这样的
: 这个in-class member initialization非但违反了C++自己的准则,也违反了C的传统准
: 则,声明归声明,定义归定义,应该分开。我觉得C++越是想向Java学越是不好,反而
: 搞得四不像,倒是坚持上述三面大旗更好。C++就是因为一开始就是作为带类的C的扩展
: 产生的,要是语言feature越搞越多反而不好,最后变个四不像。

d****i
发帖数: 4809
37
事实是要不是因为C++对C的完全兼容和背靠C语言这座铁膀大山,恐怕早就没人用了。

【在 j******t 的大作中提到】
: 现实是如果不改的dummy smart, 那就没人用了
d****i
发帖数: 4809
38
C99以后变量可以在中间声明

【在 g*****g 的大作中提到】
: 不觉得C++需要遵守这个原则。在一个函数里C变量必须在开头声明,C++则不然。
g*****g
发帖数: 34805
39
C++对C兼容,又不是反过来。没理由要C++按着C的理念走。

【在 d****i 的大作中提到】
: 事实是要不是因为C++对C的完全兼容和背靠C语言这座铁膀大山,恐怕早就没人用了。
d****i
发帖数: 4809
40
我的意思是就是因为C++对C的兼容和坚持C的理念规范才得以存活下来,要不早没人用
了。当然这是一把双刃剑,这从另外一方面也极大的限制了C++的发展。

【在 g*****g 的大作中提到】
: C++对C兼容,又不是反过来。没理由要C++按着C的理念走。
相关主题
[新手]一直都把C++当Java写,有啥严重不妥?JAVA的初衷本来就是C++太复杂了,productivity不行
不如各位高手挑个专题讲讲C++11吧interview with Ben Klemens, author of 21st Century C
问一个defining array 的问题C++的smart pointer注定是个二流的东西
进入Programming版参与讨论
j******t
发帖数: 788
41
我倒是觉得如果C++早一点跟C隔离开,b不需要 carry那么多 legacy可能更有活力,也
不会那么复杂,很多人都学不了。所以才让后来的一些高端语言有机会。
比如说C++开始就规定不支持structure什么的,全部按OOP的规矩来,那人学起来思路
就清晰多了。

【在 d****i 的大作中提到】
: 事实是要不是因为C++对C的完全兼容和背靠C语言这座铁膀大山,恐怕早就没人用了。
l*********s
发帖数: 5409
42
Good Artists Copy; Great Artists Steal

【在 t****t 的大作中提到】
: smart pointer跟java的是两码事, 你要说曾经讨论过的GC support那还象话, 但是最
: 后也没通过.
: lambda我说了是java晚出的好不好.

d****i
发帖数: 4809
43
C++要是早跟C彻底隔开的话就不叫C++了,也没有后来的这么多上层语言Java和C#等等了

【在 j******t 的大作中提到】
: 我倒是觉得如果C++早一点跟C隔离开,b不需要 carry那么多 legacy可能更有活力,也
: 不会那么复杂,很多人都学不了。所以才让后来的一些高端语言有机会。
: 比如说C++开始就规定不支持structure什么的,全部按OOP的规矩来,那人学起来思路
: 就清晰多了。

g*****g
发帖数: 34805
44
这个不错,如果你读过BS写的那本书的话,其实处处都是说虽然C++兼容C,但最好不要
用C的语法。

【在 j******t 的大作中提到】
: 我倒是觉得如果C++早一点跟C隔离开,b不需要 carry那么多 legacy可能更有活力,也
: 不会那么复杂,很多人都学不了。所以才让后来的一些高端语言有机会。
: 比如说C++开始就规定不支持structure什么的,全部按OOP的规矩来,那人学起来思路
: 就清晰多了。

j******t
发帖数: 788
45
我可能没说清楚, 比如说C++开始就规定不支持structure什么的,全 部按OOP的规矩
来,那人学起来思路 就清 晰多了。后面的其它语言也可以搞,实际后来的那些语言搞
出来就是为了抛弃C的很多传统。毕竟从程序设计角度讲C and C++ are like orange
and apple

等了

【在 d****i 的大作中提到】
: C++要是早跟C彻底隔开的话就不叫C++了,也没有后来的这么多上层语言Java和C#等等了
t****t
发帖数: 6806
46
你所谓的"三面大旗"对不对且不说, 我没明白这个in-class member init违反了这三面
大旗里的哪一面?
我的看法是, 如果C++只是"带类的C扩展", 那就完全违返了C++的设计初衷. C++一开始
就是一个完全不同的语言, 只是为了C多年来大量的已有的库来兼容C而已.

【在 d****i 的大作中提到】
: 这个feature还是很不好,C++一直是高举三面大旗得以屹立不倒:
: 1)对C语言的完全兼容和遵循C的规范和理念
: 2)对performance下降的零容忍
: 3)坚持静态类型检查,只用极少量的RTTI这样的
: 这个in-class member initialization非但违反了C++自己的准则,也违反了C的传统准
: 则,声明归声明,定义归定义,应该分开。我觉得C++越是想向Java学越是不好,反而
: 搞得四不像,倒是坚持上述三面大旗更好。C++就是因为一开始就是作为带类的C的扩展
: 产生的,要是语言feature越搞越多反而不好,最后变个四不像。

t****t
发帖数: 6806
47
为了弱智的猴子们不至于乱丢垃圾.
我知道你是什么意思, 但是我的看法是smart pointer并不能解决猴子乱丢垃圾的问题,
一开始也不是这个目的.

【在 j******t 的大作中提到】
: 你先回答我一个基本的问题,我说的Java garbage collection为了解决什么问题
g****u
发帖数: 252
48
非static const的in-class initialization把本应在constructor一处的对象初始化代
码给分离了, 容易引起误解, 我觉得不是一个好的抽象.

【在 d****i 的大作中提到】
: 这个feature还是很不好,C++一直是高举三面大旗得以屹立不倒:
: 1)对C语言的完全兼容和遵循C的规范和理念
: 2)对performance下降的零容忍
: 3)坚持静态类型检查,只用极少量的RTTI这样的
: 这个in-class member initialization非但违反了C++自己的准则,也违反了C的传统准
: 则,声明归声明,定义归定义,应该分开。我觉得C++越是想向Java学越是不好,反而
: 搞得四不像,倒是坚持上述三面大旗更好。C++就是因为一开始就是作为带类的C的扩展
: 产生的,要是语言feature越搞越多反而不好,最后变个四不像。

j******t
发帖数: 788
49
LOL,完全同意,其实从技术上当时是完全可以做到的,让 c++和C在运行中可连,但是
语法上不相通。不知道大佬们当时怎么想的

【在 t****t 的大作中提到】
: 你所谓的"三面大旗"对不对且不说, 我没明白这个in-class member init违反了这三面
: 大旗里的哪一面?
: 我的看法是, 如果C++只是"带类的C扩展", 那就完全违返了C++的设计初衷. C++一开始
: 就是一个完全不同的语言, 只是为了C多年来大量的已有的库来兼容C而已.

j******t
发帖数: 788
50
不能完全解决,网上已经有很多这样的问题了。

题,

【在 t****t 的大作中提到】
: 为了弱智的猴子们不至于乱丢垃圾.
: 我知道你是什么意思, 但是我的看法是smart pointer并不能解决猴子乱丢垃圾的问题,
: 一开始也不是这个目的.

相关主题
琢磨了一下c++ smart pointer,发现不能到处用Question on C++ Access Control (protected)
什么时候使用c++ smart pointer?C语言重复定义问题
怎么准备一些hardcore C++的interview (转载)请推荐一款windows xp 平台上优秀的C语言编译/编辑器
进入Programming版参与讨论
j******t
发帖数: 788
51
实际上很多公司内部规定是不准使用初始化 容易有bug,我也觉得能不用最好不用

【在 g****u 的大作中提到】
: 非static const的in-class initialization把本应在constructor一处的对象初始化代
: 码给分离了, 容易引起误解, 我觉得不是一个好的抽象.

t****t
发帖数: 6806
52
不是不能完全解决, 一开始就是不为了解决乱丢垃圾的问题做的.
所以我一直说smart pointer跟GC是两个完全不同的理念.

【在 j******t 的大作中提到】
: 不能完全解决,网上已经有很多这样的问题了。
:
: 题,

j******t
发帖数: 788
53
嘿嘿,我觉得是,最初搞autopointer 解决不了问题,后来干脆搞三个模板。你可以去查

【在 t****t 的大作中提到】
: 不是不能完全解决, 一开始就是不为了解决乱丢垃圾的问题做的.
: 所以我一直说smart pointer跟GC是两个完全不同的理念.

t****t
发帖数: 6806
54
smart pointer是为了RAII做的. 因为有exception的引入, 使得资源需要在多处释放,
而stack unwinding对传统指针没用, 所以有了所谓smart pointer. 当然最初的auto_
ptr那是一个四不像, 对copy和move很不友好, 所以引入了shared_ptr和unique_ptr,
以及moving semantics. 这和GC完全不是一回事, 目的不同, 手段也不同. 反过来, 因
为GC的存在, core java要做RAII就不是那么直接.

去查

【在 j******t 的大作中提到】
: 嘿嘿,我觉得是,最初搞autopointer 解决不了问题,后来干脆搞三个模板。你可以去查
g****u
发帖数: 252
55
你这个讲的很明白, 有点胜读十年书的感觉. 不错.

,

【在 t****t 的大作中提到】
: smart pointer是为了RAII做的. 因为有exception的引入, 使得资源需要在多处释放,
: 而stack unwinding对传统指针没用, 所以有了所谓smart pointer. 当然最初的auto_
: ptr那是一个四不像, 对copy和move很不友好, 所以引入了shared_ptr和unique_ptr,
: 以及moving semantics. 这和GC完全不是一回事, 目的不同, 手段也不同. 反过来, 因
: 为GC的存在, core java要做RAII就不是那么直接.
:
: 去查

d****i
发帖数: 4809
56
C++之父Bjarne Stroustrup设计C++的本意原来是想用C++完全代替C在系统编程的地位
,但是在经过30年以后这一想法已经被证明是错误的,Stroustrup自己也承认想用C++
来取代C在系统编程领域已经无有可能,只能作为C的点缀补充扩展,C还是系统编程老
大和写操作系统的唯一语言。

【在 g*****g 的大作中提到】
: 这个不错,如果你读过BS写的那本书的话,其实处处都是说虽然C++兼容C,但最好不要
: 用C的语法。

d****i
发帖数: 4809
57
违法了1啊,比如C里面你声明一个struct在.h文件里面,你可以直接initialize给
struct里面的变量赋值吗?头文件里面的struct就是一个声明, .c文件里面才创建
struct的实例。

【在 t****t 的大作中提到】
: 你所谓的"三面大旗"对不对且不说, 我没明白这个in-class member init违反了这三面
: 大旗里的哪一面?
: 我的看法是, 如果C++只是"带类的C扩展", 那就完全违返了C++的设计初衷. C++一开始
: 就是一个完全不同的语言, 只是为了C多年来大量的已有的库来兼容C而已.

g****u
发帖数: 252
58
我觉得C++很有戏啊. 所谓的系统在不同的时代指的东西很不一样的. 已经用c写了的自
然不需要再用C++重起炉灶, 但是新的东西用C++的还是挺多的啊.

【在 d****i 的大作中提到】
: C++之父Bjarne Stroustrup设计C++的本意原来是想用C++完全代替C在系统编程的地位
: ,但是在经过30年以后这一想法已经被证明是错误的,Stroustrup自己也承认想用C++
: 来取代C在系统编程领域已经无有可能,只能作为C的点缀补充扩展,C还是系统编程老
: 大和写操作系统的唯一语言。

r*g
发帖数: 3159
59
c++ 现在在弱化 OOP。鼓励你用stl容器,算法,不要搞继承。

【在 j******t 的大作中提到】
: 我可能没说清楚, 比如说C++开始就规定不支持structure什么的,全 部按OOP的规矩
: 来,那人学起来思路 就清 晰多了。后面的其它语言也可以搞,实际后来的那些语言搞
: 出来就是为了抛弃C的很多传统。毕竟从程序设计角度讲C and C++ are like orange
: and apple
:
: 等了

l*********s
发帖数: 5409
60
cong bai!

,

【在 t****t 的大作中提到】
: smart pointer是为了RAII做的. 因为有exception的引入, 使得资源需要在多处释放,
: 而stack unwinding对传统指针没用, 所以有了所谓smart pointer. 当然最初的auto_
: ptr那是一个四不像, 对copy和move很不友好, 所以引入了shared_ptr和unique_ptr,
: 以及moving semantics. 这和GC完全不是一回事, 目的不同, 手段也不同. 反过来, 因
: 为GC的存在, core java要做RAII就不是那么直接.
:
: 去查

相关主题
问一个volatile和memcpy一起用的问题一个C#使用C++.NET类库的问题
C++ pointer to function is buggy(zz)C++11新特性
C++必备书籍推荐int F::*x = &F::x是什么意思?
进入Programming版参与讨论
d****i
发帖数: 4809
61
在一些分秒必争,寸土必争的场合,C++的一些feature比起C来还是有overhead。

【在 g****u 的大作中提到】
: 我觉得C++很有戏啊. 所谓的系统在不同的时代指的东西很不一样的. 已经用c写了的自
: 然不需要再用C++重起炉灶, 但是新的东西用C++的还是挺多的啊.

r*g
发帖数: 3159
62
BS举了个例子,stl的sort写的简洁好懂, 又比c自己的qsort要快,这个例子还是蛮有
趣的。

【在 d****i 的大作中提到】
: 在一些分秒必争,寸土必争的场合,C++的一些feature比起C来还是有overhead。
c******o
发帖数: 1277
63
听起来很FP

【在 r*g 的大作中提到】
: c++ 现在在弱化 OOP。鼓励你用stl容器,算法,不要搞继承。
S**I
发帖数: 15689
64
你给举几个系统用C++的例子。

【在 g****u 的大作中提到】
: 我觉得C++很有戏啊. 所谓的系统在不同的时代指的东西很不一样的. 已经用c写了的自
: 然不需要再用C++重起炉灶, 但是新的东西用C++的还是挺多的啊.

f******y
发帖数: 2971
65
这个很难吗?在C++里我基本就没怎么用过raw ptr。

,
奔了

【在 j******t 的大作中提到】
: 太有意思了,比如C++11认为不应该直接操作Raw pointer,所以要用smarter pointer,
: 想想这要形成习惯其实是很大的一个改变。以前java developer就嘲笑c/c++土容易有
: 内存泄漏,现在要大家直接用smart pointer 问题就解决了。至少我以后会尽量不裸奔了
:
: C

f******y
发帖数: 2971
66
嗯,我也觉得那个东西四不像,我可能不会去用。

【在 g****u 的大作中提到】
: 非static const的in-class initialization把本应在constructor一处的对象初始化代
: 码给分离了, 容易引起误解, 我觉得不是一个好的抽象.

j******t
发帖数: 788
67
我们讨论的是以前没有标准的工具实现对raw pt的封装,现在有了。C11提供了这样的
feature.你一般是如何做到彻底不碰RAW PTR的? 你从来没有CALL过NEW operator?

【在 f******y 的大作中提到】
: 这个很难吗?在C++里我基本就没怎么用过raw ptr。
:
: ,
: 奔了

j******t
发帖数: 788
68
No, I guess we are not talking about the same thing.
RAII is all about the allocation/deallocation of resource. It is just one of
usages of smart pointer, which actually was shared_pointer when RAII
mechanism was born. But that is not the reason people invented smart
pointer, I guess you are confused with the two idioms, smart pointer is much
much more than either shared_pointer or autopointer. Let's just forget
about these two dead words. Do not assume they are the same as smart pointer
.

,

【在 t****t 的大作中提到】
: smart pointer是为了RAII做的. 因为有exception的引入, 使得资源需要在多处释放,
: 而stack unwinding对传统指针没用, 所以有了所谓smart pointer. 当然最初的auto_
: ptr那是一个四不像, 对copy和move很不友好, 所以引入了shared_ptr和unique_ptr,
: 以及moving semantics. 这和GC完全不是一回事, 目的不同, 手段也不同. 反过来, 因
: 为GC的存在, core java要做RAII就不是那么直接.
:
: 去查

f******y
发帖数: 2971
69
以前有auto_ptr啊。

【在 j******t 的大作中提到】
: 我们讨论的是以前没有标准的工具实现对raw pt的封装,现在有了。C11提供了这样的
: feature.你一般是如何做到彻底不碰RAW PTR的? 你从来没有CALL过NEW operator?

t****t
发帖数: 6806
70
C又不是没有inline. 什么都照着C来, 那C还没有class呢.

【在 d****i 的大作中提到】
: 违法了1啊,比如C里面你声明一个struct在.h文件里面,你可以直接initialize给
: struct里面的变量赋值吗?头文件里面的struct就是一个声明, .c文件里面才创建
: struct的实例。

相关主题
int F::*x = &F::x是什么意思?不如各位高手挑个专题讲讲C++11吧
我老不厚道地说一句,C的工作稳定是假的。问一个defining array 的问题
[新手]一直都把C++当Java写,有啥严重不妥?JAVA的初衷本来就是C++太复杂了,productivity不行
进入Programming版参与讨论
t****t
发帖数: 6806
71
最开始的auto_ptr就是为了RAII做的, 你别搞错因果了...另外你在一开始贴里写的就
是"C++11的smart pointer", 也就是shared_ptr和unique_ptr两个. 你要说广义的
smart pointer, 那是另一回事, 不要偷换概念.

of
much
pointer

【在 j******t 的大作中提到】
: No, I guess we are not talking about the same thing.
: RAII is all about the allocation/deallocation of resource. It is just one of
: usages of smart pointer, which actually was shared_pointer when RAII
: mechanism was born. But that is not the reason people invented smart
: pointer, I guess you are confused with the two idioms, smart pointer is much
: much more than either shared_pointer or autopointer. Let's just forget
: about these two dead words. Do not assume they are the same as smart pointer
: .
:
: ,

j******t
发帖数: 788
72
it has been depreciated long before, now it is replaced with uniq_pnter in
smart pointers. But only with auto_ptr, it is hard believe you never call
work with raw ptr? for example, have you ever call new operator in yr system
to create allocate a class or structure? at least I can not do it in my
system

【在 f******y 的大作中提到】
: 以前有auto_ptr啊。
t****t
发帖数: 6806
73
C++很多时候并不鼓励你用指针, 你直接用对象即可.

system

【在 j******t 的大作中提到】
: it has been depreciated long before, now it is replaced with uniq_pnter in
: smart pointers. But only with auto_ptr, it is hard believe you never call
: work with raw ptr? for example, have you ever call new operator in yr system
: to create allocate a class or structure? at least I can not do it in my
: system

j******t
发帖数: 788
74
No, no, misconception! "C++11的smart pointer" is not THE original
shared_ptr and unique_ptr. it includes shared_ptr, uniq_ptr and weak_ptr,
with a bunch of semantic functions, i.e, ownership movement etc.
Though it is problematic and might trigger memory leak when people move the
dependency around, this is different issue

【在 t****t 的大作中提到】
: 最开始的auto_ptr就是为了RAII做的, 你别搞错因果了...另外你在一开始贴里写的就
: 是"C++11的smart pointer", 也就是shared_ptr和unique_ptr两个. 你要说广义的
: smart pointer, 那是另一回事, 不要偷换概念.
:
: of
: much
: pointer

j******t
发帖数: 788
75
I agree if you mean "with containers". But when I use stl containers I saw
negative impact of the performance.

【在 t****t 的大作中提到】
: C++很多时候并不鼓励你用指针, 你直接用对象即可.
:
: system

f******y
发帖数: 2971
76
auto_ptr只是在C++11里才deprecated的,是因为有了那两个新的。后边的麻烦你用中
文说一下。

system

【在 j******t 的大作中提到】
: it has been depreciated long before, now it is replaced with uniq_pnter in
: smart pointers. But only with auto_ptr, it is hard believe you never call
: work with raw ptr? for example, have you ever call new operator in yr system
: to create allocate a class or structure? at least I can not do it in my
: system

j******t
发帖数: 788
77
sorry, I cannot type Chinese here, auto_ptr was not recommended long
before c++ 11 was born, many developers hate it. I dont know what part you
mean for"后边的麻烦你用中文说一下"

【在 f******y 的大作中提到】
: auto_ptr只是在C++11里才deprecated的,是因为有了那两个新的。后边的麻烦你用中
: 文说一下。
:
: system

s******u
发帖数: 501
78
vector 和 bare pointer array? 两个也许有1%的性能差别
另外C++的程序确实99%不需要用到指针,甚至不需要smart pointer。很难想象到处是
指针的C++程序

【在 j******t 的大作中提到】
: I agree if you mean "with containers". But when I use stl containers I saw
: negative impact of the performance.

t****t
发帖数: 6806
79
weak_ptr is not independent. so it goes down to two (templated) classes:
unique_ptr and shared_ptr. auto_ptr in c++03 is deprecated anyway. so when
you say c++11 smart pointers, it must be these two classes. look at the
table of contents, there are only 2 section under "smart pointers". i don't
know what else you refer, maybe you get some wrong impression from other
sources.

the

【在 j******t 的大作中提到】
: No, no, misconception! "C++11的smart pointer" is not THE original
: shared_ptr and unique_ptr. it includes shared_ptr, uniq_ptr and weak_ptr,
: with a bunch of semantic functions, i.e, ownership movement etc.
: Though it is problematic and might trigger memory leak when people move the
: dependency around, this is different issue

t****t
发帖数: 6806
80
no, i don't mean containers. for example, you want class Foo, instead of
Foo* f=new Foo;
you just say
Foo f;
the same rule extends to almost everywhere.

【在 j******t 的大作中提到】
: I agree if you mean "with containers". But when I use stl containers I saw
: negative impact of the performance.

相关主题
interview with Ben Klemens, author of 21st Century C什么时候使用c++ smart pointer?
C++的smart pointer注定是个二流的东西怎么准备一些hardcore C++的interview (转载)
琢磨了一下c++ smart pointer,发现不能到处用Question on C++ Access Control (protected)
进入Programming版参与讨论
j******t
发帖数: 788
81
In many cases, you need to allocate the memory in heap, not stack.
Also, in some pattern like singalton as an example, you want the life span
of f longer than the unit that it is created.
This is the whole point why the pointer was invented from beginning

【在 t****t 的大作中提到】
: no, i don't mean containers. for example, you want class Foo, instead of
: Foo* f=new Foo;
: you just say
: Foo f;
: the same rule extends to almost everywhere.

t****t
发帖数: 6806
82
there are some cases, yes. but not a lot. it's much less than in C.

【在 j******t 的大作中提到】
: In many cases, you need to allocate the memory in heap, not stack.
: Also, in some pattern like singalton as an example, you want the life span
: of f longer than the unit that it is created.
: This is the whole point why the pointer was invented from beginning

j******t
发帖数: 788
83
Perhaps we are working on different fields, in my field performance
efficiency and memory usage make the call. I can not afford creating stack
objects too often. I need to put the objects I created in a pool of heap,
and delete them all after jobs are done.
That is also where I saw big difference between raw pointer and stl
container. I remember I used once the stl::find_if to search on a long list,
it ends up FXXKING slow. So I got rid of the stl stuff, and created a new
data structure to do the search. The performance was almost 10 times faster
that the standard template.

【在 t****t 的大作中提到】
: there are some cases, yes. but not a lot. it's much less than in C.
t****t
发帖数: 6806
84
in lots of cases, the real data IS in the heap, e.g. most containers (except
std::array). if you say STL containers give you a performance hit, you
really shouldn't use c++. STL containers are as efficient as your own
allocated arrays.

【在 j******t 的大作中提到】
: Perhaps we are working on different fields, in my field performance
: efficiency and memory usage make the call. I can not afford creating stack
: objects too often. I need to put the objects I created in a pool of heap,
: and delete them all after jobs are done.
: That is also where I saw big difference between raw pointer and stl
: container. I remember I used once the stl::find_if to search on a long list,
: it ends up FXXKING slow. So I got rid of the stl stuff, and created a new
: data structure to do the search. The performance was almost 10 times faster
: that the standard template.

j******t
发帖数: 788
85
Theoretically that's what I wa told. But my test cases made different
conclusion.Probably it was because I used std container, instead of boost or
SGI stl.

except

【在 t****t 的大作中提到】
: in lots of cases, the real data IS in the heap, e.g. most containers (except
: std::array). if you say STL containers give you a performance hit, you
: really shouldn't use c++. STL containers are as efficient as your own
: allocated arrays.

m*******l
发帖数: 12782
86
-O2

or

【在 j******t 的大作中提到】
: Theoretically that's what I wa told. But my test cases made different
: conclusion.Probably it was because I used std container, instead of boost or
: SGI stl.
:
: except

b*******s
发帖数: 5216
87
最近的14也顺带看看吧
其实很多概念boost里面早就有了

【在 j******t 的大作中提到】
: 现在很多工作都问了.
m*******l
发帖数: 12782
88
Herb Sutter tried push some C# features in
(some in, some not)

【在 t****t 的大作中提到】
: 我很好奇的问一下, C++11融合了什么JAVA的理念?
: C++11我从draft开始用很久了, 没发现什么JAVA的理念啊.

j******t
发帖数: 788
89
:), or because i am smarter than those indian jerks working in MS.although
i am not major in CS

【在 m*******l 的大作中提到】
: -O2
:
: or

j******t
发帖数: 788
90
Lol

【在 m*******l 的大作中提到】
: Herb Sutter tried push some C# features in
: (some in, some not)

相关主题
C语言重复定义问题C++ pointer to function is buggy
请推荐一款windows xp 平台上优秀的C语言编译/编辑器C++必备书籍推荐
问一个volatile和memcpy一起用的问题一个C#使用C++.NET类库的问题
进入Programming版参与讨论
m*******l
发帖数: 12782
91
smart pointer started at least C++03

,
奔了

【在 j******t 的大作中提到】
: 太有意思了,比如C++11认为不应该直接操作Raw pointer,所以要用smarter pointer,
: 想想这要形成习惯其实是很大的一个改变。以前java developer就嘲笑c/c++土容易有
: 内存泄漏,现在要大家直接用smart pointer 问题就解决了。至少我以后会尽量不裸奔了
:
: C

m*******l
发帖数: 12782
92
range for loop is from C#?

threading
的。

【在 g*****g 的大作中提到】
: 还是有一些的,诸如规定primitive数据长度,in-class member initializers,
: delegating constructors, override, final, explicit cast, for loop, threading
: support, future.
: 当然这些东西不见得是java原创的,只是说理念和一些语法明显能看出从Java借鉴来的。

b*******s
发帖数: 5216
93
c++有多种风格,你可以坚持c++98的带类的c的风格,但c++1y风格的也是可以并存的
不矛盾

complex

【在 d****i 的大作中提到】
: I still like the traditional way of C++ (C-style C++). If C++11 adds more
: syntactic sugars, it doesn't help but hurts itself and makes it more complex
: and uglier.

m*******l
发帖数: 12782
94
future is possible from C# too

【在 t****t 的大作中提到】
: primitive 数据长度是从C99来的. in-class member initializer和delegating
: constructor 这个我确实不太清楚. override/final是从java来的没错, 我能看到的也
: 就是这个.
: explicit cast原来就有, 这次扩展了一下. ranged for loop很难说是从哪里来的.
: thread support/future是library, 直接从boost来的. 当然boost可能最初是从java来
: 的也未可知.
:
: threading
: 的。

b*******s
发帖数: 5216
95
后端还是有竞争的

【在 d****i 的大作中提到】
: C++和Java并不存在竞争,两个基本上各自用于不同的领域,和Java竞争的是C#,PHP,
: Python,Perl,Ruby,Node等等(都是server-side languages),更主要的是来自JVM上的
: Scala,Clojure,Groovy等这些“篡权者”。

m*******l
发帖数: 12782
96
C++ has anonymous namespace :)

【在 g*****g 的大作中提到】
: java的匿名内部类,应该是很早就出了的。早期C++应该是靠void*来实现相似的功能。
: 谁早谁晚我就说不好了。

b*******s
发帖数: 5216
97
type safe现在也是c++ coding convention了

,
奔了

【在 j******t 的大作中提到】
: 太有意思了,比如C++11认为不应该直接操作Raw pointer,所以要用smarter pointer,
: 想想这要形成习惯其实是很大的一个改变。以前java developer就嘲笑c/c++土容易有
: 内存泄漏,现在要大家直接用smart pointer 问题就解决了。至少我以后会尽量不裸奔了
:
: C

j******t
发帖数: 788
98
confused with auto pointer, we have a whole list of posts above arguing
about this. let s be professional. auto pointer is just similar to unique
pointer.SImilar not SAME

【在 m*******l 的大作中提到】
: smart pointer started at least C++03
:
: ,
: 奔了

j******t
发帖数: 788
99
lol

【在 m*******l 的大作中提到】
: range for loop is from C#?
:
: threading
: 的。

b*******s
发帖数: 5216
100
auto_ptr最大的问题是不能和容器一起工作
之后又有了move constructor
所以现在废除了

去查

【在 j******t 的大作中提到】
: 嘿嘿,我觉得是,最初搞autopointer 解决不了问题,后来干脆搞三个模板。你可以去查
相关主题
(zz)C++11新特性[新手]一直都把C++当Java写,有啥严重不妥?
int F::*x = &F::x是什么意思?不如各位高手挑个专题讲讲C++11吧
我老不厚道地说一句,C的工作稳定是假的。问一个defining array 的问题
进入Programming版参与讨论
b*******s
发帖数: 5216
101
c++不如c适合写内核

【在 g****u 的大作中提到】
: 我觉得C++很有戏啊. 所谓的系统在不同的时代指的东西很不一样的. 已经用c写了的自
: 然不需要再用C++重起炉灶, 但是新的东西用C++的还是挺多的啊.

m*******l
发帖数: 12782
102
auto_ptr, shared_ptr, unique_ptr are all smart pointer.

【在 j******t 的大作中提到】
: confused with auto pointer, we have a whole list of posts above arguing
: about this. let s be professional. auto pointer is just similar to unique
: pointer.SImilar not SAME

m*******l
发帖数: 12782
103
stl was started way back 98?

【在 r*g 的大作中提到】
: c++ 现在在弱化 OOP。鼓励你用stl容器,算法,不要搞继承。
m*******l
发帖数: 12782
104
说的是不必要的overhead

【在 d****i 的大作中提到】
: 在一些分秒必争,寸土必争的场合,C++的一些feature比起C来还是有overhead。
m*******l
发帖数: 12782
105
yes

【在 c******o 的大作中提到】
: 听起来很FP
S**I
发帖数: 15689
106
写内核用C++的我只知道苹果,不过也只有限地使用C++的某些特性,很多花里胡哨的东
东是不用的。

【在 b*******s 的大作中提到】
: c++不如c适合写内核
b*******s
发帖数: 5216
107
不是很相信能差一个数量级
你能发一点代码吗?

list,
faster

【在 j******t 的大作中提到】
: Perhaps we are working on different fields, in my field performance
: efficiency and memory usage make the call. I can not afford creating stack
: objects too often. I need to put the objects I created in a pool of heap,
: and delete them all after jobs are done.
: That is also where I saw big difference between raw pointer and stl
: container. I remember I used once the stl::find_if to search on a long list,
: it ends up FXXKING slow. So I got rid of the stl stuff, and created a new
: data structure to do the search. The performance was almost 10 times faster
: that the standard template.

m*******l
发帖数: 12782
108
you it all wrong

of
much
pointer

【在 j******t 的大作中提到】
: No, I guess we are not talking about the same thing.
: RAII is all about the allocation/deallocation of resource. It is just one of
: usages of smart pointer, which actually was shared_pointer when RAII
: mechanism was born. But that is not the reason people invented smart
: pointer, I guess you are confused with the two idioms, smart pointer is much
: much more than either shared_pointer or autopointer. Let's just forget
: about these two dead words. Do not assume they are the same as smart pointer
: .
:
: ,

m*******l
发帖数: 12782
109
????

system

【在 j******t 的大作中提到】
: it has been depreciated long before, now it is replaced with uniq_pnter in
: smart pointers. But only with auto_ptr, it is hard believe you never call
: work with raw ptr? for example, have you ever call new operator in yr system
: to create allocate a class or structure? at least I can not do it in my
: system

t****t
发帖数: 6806
110
find_if是线性的, 你要自己做个二分查找啥的当然快10倍不止. 你要重做一个线性的
查找还能比find_if快10倍那就太牛了.
你要是自己做一个strtod比现成的快那倒是有可能的, 现成的考虑了太多corner case,
我从网上抄了段代码确实比原来快好几倍. 不过那是因为我读一个几百兆的文件.

list,
faster

【在 j******t 的大作中提到】
: Perhaps we are working on different fields, in my field performance
: efficiency and memory usage make the call. I can not afford creating stack
: objects too often. I need to put the objects I created in a pool of heap,
: and delete them all after jobs are done.
: That is also where I saw big difference between raw pointer and stl
: container. I remember I used once the stl::find_if to search on a long list,
: it ends up FXXKING slow. So I got rid of the stl stuff, and created a new
: data structure to do the search. The performance was almost 10 times faster
: that the standard template.

相关主题
问一个defining array 的问题C++的smart pointer注定是个二流的东西
JAVA的初衷本来就是C++太复杂了,productivity不行琢磨了一下c++ smart pointer,发现不能到处用
interview with Ben Klemens, author of 21st Century C什么时候使用c++ smart pointer?
进入Programming版参与讨论
m*******l
发帖数: 12782
111
what are you talking about?
Pointer are there since Assembly language, C. ....

【在 j******t 的大作中提到】
: In many cases, you need to allocate the memory in heap, not stack.
: Also, in some pattern like singalton as an example, you want the life span
: of f longer than the unit that it is created.
: This is the whole point why the pointer was invented from beginning

t****t
发帖数: 6806
112
晕了, 这位justdoit同学有发完了改文章的坏习惯. 发现他很多奇怪的观点我刚才没看
到!

【在 m*******l 的大作中提到】
: what are you talking about?
: Pointer are there since Assembly language, C. ....

m*******l
发帖数: 12782
113
strtok?

case,

【在 t****t 的大作中提到】
: find_if是线性的, 你要自己做个二分查找啥的当然快10倍不止. 你要重做一个线性的
: 查找还能比find_if快10倍那就太牛了.
: 你要是自己做一个strtod比现成的快那倒是有可能的, 现成的考虑了太多corner case,
: 我从网上抄了段代码确实比原来快好几倍. 不过那是因为我读一个几百兆的文件.
:
: list,
: faster

m*******l
发帖数: 12782
114
这个同学很多概念都不对

【在 t****t 的大作中提到】
: 晕了, 这位justdoit同学有发完了改文章的坏习惯. 发现他很多奇怪的观点我刚才没看
: 到!

k***s
发帖数: 277
115
最近看了BS的TCPL 4th,觉得新特性加得太贴心(个人经验)
- auto, decltype, declval, meta programming/template的利器
- lambda,非常爽的特性
- rvalue reference &&, temporary object 的终极优化
- varidic, 可变长template参数列表, meta/template 利器
- {} 初始化列表,刚接触时觉得很变态,不过习惯了觉得很强大
很期望14、17的增强会 带来更多惊喜

part

【在 f******y 的大作中提到】
: library是standard里的不多,但third party的不少,一个boost基本什么都包了。现
: 在c++ committee里的人也意识到应该加强library了,所以11加了不少东西。以后还会
: 接着加。要说C++的问题是上一次标准更新太慢了,从03到11整整8年。这期间Java推出
: 了好几个版本了,主要是一直有个大公司专门做。C++的标准更像是一群志愿者的part
: time job,所以更新很慢,造成了近期吸引力的下降。

t****t
发帖数: 6806
116
strtod, aka atof()

【在 m*******l 的大作中提到】
: strtok?
:
: case,

t****t
发帖数: 6806
117
14都是小改动, 围绕着lambda来的. 17有了吗?

【在 k***s 的大作中提到】
: 最近看了BS的TCPL 4th,觉得新特性加得太贴心(个人经验)
: - auto, decltype, declval, meta programming/template的利器
: - lambda,非常爽的特性
: - rvalue reference &&, temporary object 的终极优化
: - varidic, 可变长template参数列表, meta/template 利器
: - {} 初始化列表,刚接触时觉得很变态,不过习惯了觉得很强大
: 很期望14、17的增强会 带来更多惊喜
:
: part

r*g
发帖数: 3159
118
看到这个好奇,就google到一个类似的:
STL lower_bound on lists four times slower than naive algorithm
http://sambal.org/2008/06/695/

case,

【在 t****t 的大作中提到】
: find_if是线性的, 你要自己做个二分查找啥的当然快10倍不止. 你要重做一个线性的
: 查找还能比find_if快10倍那就太牛了.
: 你要是自己做一个strtod比现成的快那倒是有可能的, 现成的考虑了太多corner case,
: 我从网上抄了段代码确实比原来快好几倍. 不过那是因为我读一个几百兆的文件.
:
: list,
: faster

m*******l
发帖数: 12782
119
o,从来没有用过这个

【在 t****t 的大作中提到】
: strtod, aka atof()
b*******s
发帖数: 5216
120
auto很可能被滥用

【在 k***s 的大作中提到】
: 最近看了BS的TCPL 4th,觉得新特性加得太贴心(个人经验)
: - auto, decltype, declval, meta programming/template的利器
: - lambda,非常爽的特性
: - rvalue reference &&, temporary object 的终极优化
: - varidic, 可变长template参数列表, meta/template 利器
: - {} 初始化列表,刚接触时觉得很变态,不过习惯了觉得很强大
: 很期望14、17的增强会 带来更多惊喜
:
: part

相关主题
怎么准备一些hardcore C++的interview (转载)请推荐一款windows xp 平台上优秀的C语言编译/编辑器
Question on C++ Access Control (protected)问一个volatile和memcpy一起用的问题
C语言重复定义问题C++ pointer to function is buggy
进入Programming版参与讨论
p***o
发帖数: 1252
121
list上用lower_bound? 没学过数据结构的还是不要用STL比较好 ...

【在 r*g 的大作中提到】
: 看到这个好奇,就google到一个类似的:
: STL lower_bound on lists four times slower than naive algorithm
: http://sambal.org/2008/06/695/
:
: case,

t****t
发帖数: 6806
122
真是的...

【在 p***o 的大作中提到】
: list上用lower_bound? 没学过数据结构的还是不要用STL比较好 ...
k**********g
发帖数: 989
123

同意,可以连结就够了。

【在 j******t 的大作中提到】
: LOL,完全同意,其实从技术上当时是完全可以做到的,让 c++和C在运行中可连,但是
: 语法上不相通。不知道大佬们当时怎么想的

k**********g
发帖数: 989
124

list,
faster
I think your problem may be related to container resizing (which, despite we
were taught by the intro CS that such resizing has "amortized linear cost",
in practice it is horrible because malloc is involved.) Try make a forecast
of the eventual container size, and then preallocate (via "reserve").
Try stick with std::vector and with reserve().

【在 j******t 的大作中提到】
: Perhaps we are working on different fields, in my field performance
: efficiency and memory usage make the call. I can not afford creating stack
: objects too often. I need to put the objects I created in a pool of heap,
: and delete them all after jobs are done.
: That is also where I saw big difference between raw pointer and stl
: container. I remember I used once the stl::find_if to search on a long list,
: it ends up FXXKING slow. So I got rid of the stl stuff, and created a new
: data structure to do the search. The performance was almost 10 times faster
: that the standard template.

n*w
发帖数: 3393
125
auto是不是类似c#的var, scala的val?
很喜欢var,val。

【在 b*******s 的大作中提到】
: auto很可能被滥用
1 (共1页)
进入Programming版参与讨论
相关主题
问一个volatile和memcpy一起用的问题不如各位高手挑个专题讲讲C++11吧
C++ pointer to function is buggy问一个defining array 的问题
C++必备书籍推荐JAVA的初衷本来就是C++太复杂了,productivity不行
一个C#使用C++.NET类库的问题interview with Ben Klemens, author of 21st Century C
(zz)C++11新特性C++的smart pointer注定是个二流的东西
int F::*x = &F::x是什么意思?琢磨了一下c++ smart pointer,发现不能到处用
我老不厚道地说一句,C的工作稳定是假的。什么时候使用c++ smart pointer?
[新手]一直都把C++当Java写,有啥严重不妥?怎么准备一些hardcore C++的interview (转载)
相关话题的讨论汇总
话题: c++话题: java话题: pointer话题: ptr话题: smart