原创 C++中簡化類型聲明的方式

在C++中有兩種簡化複雜類型聲明的方式: using typedef 複雜的聲明 指向數組的指針: double (*p)[10]; 他複雜嗎?複雜,我不僅要記住指針(*)優先級小於數組([ ]),還要使用括號( ( ) )告

原创 GCC的學習(二)頭文件及其庫製作

一、-I 頭文件路徑 1.1 工程結構簡單不需要-I選項 工程若源代碼及頭文件數量較少根本不需要-I選項,將他們放在同一級目錄下,源文件就可正常找到頭文件: //ttt.cpp #include <stdio.h> #includ

原创 GCC的學習(三)宏定義和警告

一、宏定義選項 -D 在編譯之時在代碼中添宏定義,方便調試。 #include <stdio.h> int main() { #define DEBUG printf("I am debuging\n");

原创 “新”標準下隨機數生成方法

這裏用到了C++隨機數引擎其頭文件爲,爲了隨機初始化引擎還用到了<time.h> 三步輸出一個隨機數 隨機初始化引擎 選擇合適的分佈 調用 引擎+分佈 示例 double get_ramdon_double0_2() { s

原创 初識vector內存增長機制

一、vector的特點 動態性,空間大小既可以增大亦可以減少; 連續性,vector元素序列在空間地址是連續分佈的; 穩定性,vector元素序列在空間地址是相對固定的。 1.1 vector的動態性 vector常常被稱爲動

原创 std::string插入的方法

std::string的插入位置 string插入位置是在下標或者迭代器對應元素的前邊,我們知道長度爲n的字符串有n+1的插入位置。 string str("4396"); //s.insert(pos,args) //args:

原创 (二)五次多項式軌跡規劃

一、三次多項式軌跡規劃的缺陷 上一篇文章說道,三次多項式軌跡規劃只能夠保證速度和位移連續,並不能保證加速度連續。加速度不連續將會對使電機抖動、甚至衝擊。 二、軌跡規劃中的五次多項式 我們對加速度數值進行指定,將會增加兩個加速度方程

原创 dynamic_cast向上轉換總是成功,向下轉換有可能成功

一 dynamic_cast在什麼時候用? dynamic_cast通常用在基類指針或引用執行某個非虛函數的派生類方法.他是一種安全但是耗時的操作,能夠通過一定方法避免使用. 二 dynamic_cast 形式 dynamic_c

原创 #define 和typedef的區別和相同之處

[1] https://www.cnblogs.com/huolong-blog/p/7587999.html #define和typedef的相同之處 他們都可以爲一個類型取一個別名。 #define和typedef的不同之處

原创 Range for statement

一、range for語句可以用來幹啥? range for語句用於遍歷序列。這些序列有具有迭代器成員的容器、內置數組,初始化列表三種情況。 二、如何使用 C++11後開始支持範圍for語句,他是一種通用的語法,比如說python

原创 C++11 容器中的emplace類方法

一、emplace是什麼? emplace在英文裏是放置的意思,他是爲了解決insert需要經歷複製和移動過程效率較低的問題而出現的。 二、函數原型 template <class... Args> iterator emplac

原创 const成員函數

const成員函數是什麼? 在類內,如果一個函數被const修飾,那麼它將承諾 不修改類內成員(若想修改,需要加上mutable修飾對應數據成員) 不能調用非const成員函數 如何定義 class A { public:

原创 C/C++中的內存模型

經常遇到這樣的困擾,我們寫的代碼在計算機中都存放在哪呢?這篇文章給了一個比較清晰的回答。 C/C++中內存模型 這裏自己重新抄了一遍。C++內存分爲5個區域(堆棧全常代 ): 堆 heap 動態申請的、程序員自治的一片內存區域,

原创 CRLF、CR、LF詳解

原文鏈接:https://blog.csdn.net/lishuoboy/article/details/84768748 原文地址:https://blog.csdn.net/lish

原创 進程間通信(二)管道

管道是連接兩個進程間的工具,如進程A數據通過管道流入進程B,B通過管道也可以流入進程A。 一、藉助shell的管道 Linux系統下,經常會使用到這樣一種管道: cmd1|cmd2 管道是一個暫存結果的一個空間,cmd1的標準輸