原创 (一)三次多項式軌跡規劃

一、什麼是多項式? 二、軌跡規劃中的三次多項式 選擇滿足要求的運動學性質的物理量如,如:位移、速度和加速度其實就完成了一個軌跡的規劃。以單軸關節角x(t)x(t)x(t)爲例,容易得: x(t)=c0+c1t+c2t2+c3t3

原创 GCC的學習(一)GCC簡介及其常用選項

一、什麼是GCC GCC(the GNU Compiler Collection)GCC是GNU編譯器集合 它包括了C/C++、Objective-C、Fortran、Ada和Go語言的前端和對應的庫(libstdc++)GCC初

原创 C++函數參數不確定怎麼辦?可變參數列表

一、爲什麼使用可變參數列表? 爲了解決原型函數只能顯示固定數目的參數的不足,C語言定義了一種訪問數目未定的參數列表的機制,這就是可變參數列表。 二、如何使用? “聲明 開始 使用 結束”三步完成。 type fun(list_nu

原创 C++ lambda使用方法和捕獲形式

一、lambda優點 減少命名煩惱 支持泛型編程 二、lambda什麼時候用? 簡單、使用頻率低的操作 lambda可以理解爲一個未命名的內聯函數,內聯函數要求其相對簡單;若需要頻繁調用定義函數更佳 解除算法特定謂詞限制 一

原创 聚合類:可以括號初始化的類型

一、聚合類和結構體 在C語言中結構體與聚合體非常相似。聚合類是C++中一種直接訪問成員並有特殊的初始化語法的一種類型。它滿足以下條件: 所有成員都是public的(公有) 沒有自定義構造函數(無自定義構造) 沒有類內初值(無類初

原创 C++ 類的靜態成員變量

一、什麼是靜態成員變量? 在成員聲明前加上關鍵字static這個成員就被聲明爲靜態的。他的特點是所有類的對象擁有的資源。對於一個靜態成員變量必須在類內聲明,但是要在類外初始化。 二、爲什麼要用靜態成員變量? 節省空間 (所有類靜

原创 函數重載功能類似

5.1 爲什麼需要函數重載? 減少功能相似函數的命名和記憶 5.2 函數重載定義 無論是C++、java都支持函數重載,但是python不支持。對於一個已知函數,若另一函數與已知函數名相同但是參數列表不同,那麼這一另一函數就實

原创 拷貝和賦值區別

拷貝構造,對象賦值 拷貝是構造行爲,狀態取決於用於構造的對象;賦值是對已構造對象進行狀態更新。賦值側重於更新,構造側重於構造。 等號不等於賦值,他可能是拷貝構造 下面這個語句被識別爲構造 string str="apple"; s

原创 函數聲明的默認實參

1 什麼是默認實參? 函數中形式參數被反覆賦予同一數值稱爲默認實參(Default argument)。 2 爲什麼是默認實參? 省略部分參數,功能與僅參數個數不同的函數重載相似,不過函數重載是通過編譯器匹配,而默認實參是用戶控制

原创 智能指針(一)初識

一、爲什麼要使用智能指針? 1.1 動態內存和使用原因 程序使用內存大概可以分爲“堆棧全常代”[1],和智能指針相關的是堆區,堆(heap)在C++中也被稱爲自由空間。自由空間的“自由”應該理解爲程序員自己編寫的自主控制其生命週期

原创 自定析構意味着也要自定拷貝和賦值,自定拷貝意味着要自定賦值

一、需要析構意味着拷貝和賦值 如果自定義析構意味着有指針及其指向的動態內存,採用系統合成的拷貝和賦值將會默認共享動態內存,一旦一個對象離開其作用域,將會致使delete運算符多次釋放同一塊內存。 類使用指針管理內存,如下: cla

原创 explicit可以提升構造對象效率

一、隱式轉換是什麼? 隱式轉換有點像是“預處理”,以函數調用爲例,函數調用的參數是嚴格的匹配的,假設函數接受一個double參數,在調用之時若傳入了一個int,隱式轉換,將一個不匹配的參數“預處理”成符合的參數,在本例,隱式轉換就

原创 智能指針(二)智能指針類的成員及外部方法

智能指針是一個類模板 經過實例化後,智能指針就和普通類沒有什麼區別。 構造函數 默認構造shared_ptr<T> sp和unique_ptr<T> up 指針構造shared_ptr<T> sp(T *)和unique_pt

原创 智能指針(三) 智能指針的陷阱

一、循環引用問題 shared_ptr出現循環引用的根本原因在於引用計數失效,導致其管理的空間無法釋放。 舉個簡單的例子,class A定義了一個指向自身類類型的智能指針m_spA。 class A { public: A(in

原创 (三)拋物線過渡的線性函數規劃

前面說到,無論是三次還是五次多項式進行規劃存在以下缺點: 位移往返 沒有勻速段 這一節中,我們的研究對象是初速度和末速度都爲0關節規劃運動。 一、無過渡線性函數 假設時刻ttt和角度θ\thetaθ是線性關係,其係數爲vv