Re: [问卦] C十十 适合新手吗?

楼主: dzwei (Cout<< *p << \n ;)   2020-10-10 19:15:13
C++有两个分水岭
一个是在C++11以前的
另一个是C++11以后的
称为Modern C++
这篇我就focus on Modern C++
大概就是C++11 C++14 C++17 C++20
Modern C++会强调
* Smart Pointer
自动回收空间
能避免dangling reference造成程式crash
* Perfect Forwarding / R-value reference
首先
先去了解什么是 r-value/l-value
再去了解r-value-reference/l-value-reference
然后完美转发就是基于 R-value reference
如果有人问你
"C++比C快在哪里"
你可以回它因为有着Perfect forwarding的机制在
* std:thread
concurrency的表准化
里面除了mutex外
还有效率更高的atom
两者有各自适合的地方
* constexpr关键字
可以让编译器在编译时期优化的一个新cv-qualified
* auto/decltype 型别推断
C++11开始引入
现在C++17已经算是很完整了
如果型别是编译时期就知道的
请使用auto关键字
给定一段程式
template<typename It> // algorithm to dwim ("do what I mean")
void dwim(It b, It e) // for all elements in range from
{
//想自动取的It<T> 里面的型别T作为初始化宣告
T val = ...
}
你有想过我要如何自动得到并初始化
It<T>里面的型别T吗
这要要用到trait-class
template<typename It> // algorithm to dwim ("do what I mean")
void dwim(It b, It e) // for all elements in range from
{ // b to e
while (b != e) {
typename std::iterator_traits<It>::value_type
currValue = *b;

}
}
三小 这么简地的事情也要弄到那么复杂的trait-class
C++11自从有了auto之后,
这件事情不再痛苦
template<typename It> // as before
void dwim(It b, It e)
{
while (b != e) {
auto currValue = *b;

}
* 请使用 using A = TYPE 取代 typedef
trait-calss是个有点复杂的东西
请爱用using + auto 取代这个
比方说
std::remove_const<T>::type 可以写成
std::remove_const_t<T> ,
而std::remove_const_t<T> 的实作即
template <class T>
using remove_const_t = typename remove_const<T>::type;
推荐书籍:
Effective Modern C++
但建议先看过:
Effective C++
结论: 欢迎跳槽到rust ^_^
作者: riker729 (riker)   2020-10-10 19:17:00
新手看完第一段决定放弃
作者: qsxwdc (Moo)   2020-10-10 19:18:00
还好吧!一楼也太容易放弃了?文组吗?
作者: cuteSquirrel (松鼠)   2020-10-10 19:18:00
XD
作者: Nigger5566 (尼哥56)   2020-10-10 19:18:00
讲中文谢谢
作者: Ericz7000 (Ericz7000nolan)   2020-10-10 19:19:00
新手看到标题就放弃了
作者: kindaichitom (饭吃到下巴脱臼)   2020-10-10 19:19:00
新手你给他template...
作者: ggirls (哥)   2020-10-10 19:19:00
书有中文版吗?没有推什么推。
作者: ekgs (ekgs)   2020-10-10 19:20:00
c++很有野心想解决一堆问题 搞到现在又肥又大
作者: riker729 (riker)   2020-10-10 19:20:00
新手不是应该先写个hello world?
作者: longlyeagle (长鹰宝宝实验室)   2020-10-10 19:21:00
结论笑死
作者: snow3804 (snow3804)   2020-10-10 19:22:00
说中文好吗
作者: DarkIllusion (′・ω・‵)   2020-10-10 19:22:00
不要话说一说就莫名开始推坑好吗
作者: neofire (没耐心的人....)   2020-10-10 19:22:00
学了总是有好处吧
作者: CorkiN (柯基)   2020-10-10 19:26:00
大神出没
作者: jasonlou (俄罗斯方盖)   2020-10-10 19:27:00
C++11之后还能宣告local lambda function,真他X方便
作者: ggirls (哥)   2020-10-10 19:27:00
学C++直接从effective C++开始看吗?还是之前还要入门本?
作者: ekgs (ekgs)   2020-10-10 19:27:00
总之c++不是一个适合拿来入门的语言入门我推java
作者: CorkiN (柯基)   2020-10-10 19:28:00
没看过effectiveC++,跟c++primer那本有什么不一样吗
作者: justty32   2020-10-10 19:28:00
rust成熟了吗?
作者: ekgs (ekgs)   2020-10-10 19:30:00
python入门的 看过太多之后碰其它语言连个型别都不会分
作者: kindaichitom (饭吃到下巴脱臼)   2020-10-10 19:43:00
入门我建议用QB
作者: velaro (下路双组合)   2020-10-10 19:46:00
typedef难用
作者: ggirls (哥)   2020-10-10 19:48:00
effective是指教你写出effective的code;还是effectively入门本啊?

Links booklink

Contact Us: admin [ a t ] ucptt.com