C++ question

2020-08-12 19:51:44

1、#include<opencv2/core.hpp>
這兩個標頭檔案是支援opencv2版本的頭百檔案,core是opencv的主要標頭檔案,雖然是hpp,但度其實跟.h是一樣的,包括數據結構,矩陣運算,數問據變換,記憶體管理,文字和數學答等功能,看名稱就差不多明白了,是內核的頭。
2、#include<opencv2/highgui.hpp>
highgui是另外一個版重要的標頭檔案,包括圖形介面和視權頻影象處理的標頭檔案。
3、後綴爲.h的標頭檔案C++標準已經明確提出不支援了,早些的實現將標準庫功能定義在全域性空間裡,宣告在帶.h後綴的標頭檔案裡,C++標準爲了和C區別開,也爲了正確使用名稱空間,規定標頭檔案不使用後綴.h。因此,當使用<iostream.h>時,相當於在c中呼叫庫函數,使用的是全域性名稱空間,也就是早期的c++實現;當使用的時候,該標頭檔案沒有定義全域性名稱空間,必須使用namespace std;這樣才能 纔能正確使用cout。
4、namespace是指識別符號的各種可見範圍。名稱空間用關鍵字namespace 來定義。名稱空間是C++的一種機制 機製,用來把單個識別符號下的大量有邏輯聯繫的程式實體組合到一起。此識別符號作爲此羣組的名字。所謂名稱空間,是一種將程式庫名稱封裝起來的方法,它就像在各個程式庫中立起一道道圍牆。
5、下面 下麪給一個#ifndef/#define/#endif的格式:
#ifndef A_H意思是"if not define a.h" 如果不存在a.h
接着的語句應該#define A_H 就引入a.h
最後一句應該寫#endif 否則不需要引入
#ifndef GRAPHICS_H // 防止graphics.h被重複參照
#define GRAPHICS_H
#include <math.h> // 參照標準庫的標頭檔案
#include 「header.h」 // 參照非標準庫的標頭檔案
void Function1(…); // 全域性函數宣告
class Box // 類結構宣告
{ … };
#endif
6、Eigen是可以用來進行線性代數、矩陣、向量操作等運算的C++庫,它裏面包含了很多演算法。它的License是MPL2。它支援多平臺。
Eigen採用原始碼的方式提供給使用者使用,在使用時只需要包含Eigen的標頭檔案即可進行使用。之所以採用這種方式,是因爲Eigen採用模板方式實現,由於模板函數不支援分離編譯,所以只能提供原始碼而不是動態庫的方式供使用者使用。