Modern C 有哪些能真正提公升開發效率的語法糖?

時間 2021-05-10 00:20:24

1樓:

昨天剛寫了一篇關於提高 C++ 開發效率的文章裡面介紹了11 個使用 C++ 進行開發的 trickshttps://

zhuanlan /p/346465585

2樓:「已登出」

要我說,能提高開發效率的,auto、範圍for、lambda表示式。

帶上庫(畢竟C++主張將這些實現成庫)

智慧型指標、functional、bind 這幾個大家都在說。

std::thread、std::chrono執行緒相關的互斥量、原子量、條件變數等。 好用,章口就來(誤)。 拿起來就用,寫起來很快。

3樓:blablabla

struct Test

// 如果在自己封裝乙個for_each就可以寫出

for_each(test_vec, std::mem_fn(&Test::Print));

// 實現defer

#define CONCATENATION(text1,text2) text1##text2

#define CONCAT(text1,text2) CONCATENATION(text1,text2)

class DeferHelper

private:

std::function cb_;

};#define defer(code) DeferHelper CONCAT(L,__LINE__) ([&]())

// 實現defer

int maindefer(std::cout << "hello1\n"std::cout << "hello2\n"

暫時就這些,之後再繼續加上

4樓:struct

樓上說了auto declty lambda,怎麼能能少了dynamic_cast和typeid呢。

c++是什麼都能做的語言,但也是什麼都不好做的語言,語法太多了,後面出的特性大多是以庫的形式而不是以語法糖的形式出現,等到哪天c++的庫「完善」的時候,可能會是世界第一程式語言了 #滑稽

5樓:

還記得剛接觸C語言的時候,覺得這語言設計的真傻,連基本的儲存棧和恢復棧的方法都沒有。

一晃到了202X年,標準C++終於要用協同的方式打上這個補丁了……以後在堆上實現自頂向下的遞迴樹展開,終於成為一種簡單的可能……也就是到了202X年,C++才是語義完整的一門計算機語言。至於現在,C/C++還是個殘廢。

6樓:

十糖不如一庫,語法層面的東西,說到底可以理解為「巨集」,對了少敲幾個字母,錯了除錯時間就浪費大把,它節省效率了嗎?效率,都是IDE和Lib的賣點。況且cpp的哲學有一條就是:

把所有能力給你,錯了是你不會用,不是我不行. 所以給你的都是零件,你如果造車,給你什麼零件你還是要慢慢造.

7樓:kelthuzadx

"真正"不敢當,只能說自己用的愉快(ps:也不全是cpp17/14的特性)

1. if/switch 初始化語句

//before

auto

*tmp

=parseExpression

();if

(tmp

!=nullptr

)//after if(

auto

*tmp

=parseExpression

();tmp

!=nullptr

)2. 結構化繫結

std::

tuple

string

>nextToken

();}

//before

intmain

()//after

intmain

()3. std::string_view

//before

void

isKeyword

(const

std::

string

&lit

)//after

void

isKeyword

(std

::string_view

lit)

4. 內聯變數

// A.h

inline

intk=10

;//不需要為乙個簡單的變數分乙個.cpp寫定義了

5. 摺疊表示式和泛型lambda

//before

if(x=='x'||x=='X'||x=='e'||x=='E'||x=='.')

//after

static auto anyone = (auto&& k, auto&&... args) ->bool

6. 繼承建構函式

struct

Base

inta

;charb;

doublec;

std::

stringd;

floatf;

};//before

struct

Derive

:public

Base

};//after

struct

Derive

:public

Base

;7. +lambda轉換

對lambda使用一元+表示式可以將它轉換為普通函式指標

// before

int8_t(*

CreateLonglink

)(const

std::

string

&name

,const

std::

string

&host

,const

std::

vector

>ports

,const

std::

string

&debugip)=

+(const

std::

string

&name

,const

std::

string

&host

,const

std::

vector

>ports

,const

std::

string

&debugip

)->int8_t

;// after

auto

CreateLonglink=+

(const

std::

string

&name

,const

std::

string

&host

,const

std::

vector

>ports

,const

std::

string

&debugip

)->int8_t

;使用頻率降序,不過已經偏離語法糖範疇了~ 還有些少見的特性可以參見:

esoteric-features-in-modern-cpp

kelthuzadx/Cpp17TheCompleteGuideChinese

8樓:Irons Du

我覺得導致效率更高的,直觀上(感受)最大的是lambda。

(當然還包括各種能力的提公升讓你能寫出更簡潔方便的庫也提高了業務開發效率)

另外除了開發效率,還有更安全,不僅僅體現在記憶體等資源管理,還有型別安全。

在modern c 中,模板元程式設計有哪些更方便的寫法?

Gavin 我建議除非是設計類庫,否則語言中的這種具有高度抽能力的成分,能不用就盡量不用。非常影響理解。出了問題其他人也很難修改。做業務還是Python這種直來直去的語言好。不過boost這樣的類庫就不同了。 子猫 c 模板元程式設計的寫法,還是看boost裡的庫吧 Boost 1.69.0 Lib...

有哪些書能提公升對繪畫的理解

畫學社群 給大家推薦一些關於美術的書籍,都是一些都是豆瓣評分高 1 貝蒂艾德華 像藝術家一樣思考 豆瓣8.3分 這本書是所有對繪畫感興趣,並想要通過繪畫認識自己大腦工作情況,並在這種認識的基礎上激發自己潛在創造力的人的不可多得的好工具。2 喬治 伯里曼 伯里曼人體結構繪畫教學 豆瓣8.9分 畫冊中囊...

能提公升幸福感的小家電有哪些?

Sunshine 一般我選購的小家電會是跟吃喝有關的,畢竟人間煙火味,最撫凡人心。跟題主分享一些我覺得用了就後悔沒早點買的小家電。豆漿機榨汁機 電燉鍋烤箱 蒸汽拖把 Sunshine 6.18,盤點那些用了就愛不釋手的小家電 mgmg Rudy 能提公升幸福感的家電吧,比如掃地機械人,有了它,就可以...