我正在研究嵌入式系統(ARM Cortex-M0,所以沒有Linux)。我爲嵌入式平臺編寫了很多C代碼,但這是我第一次進入C++。使用std :: array的代碼大小
在我的C代碼中,傳遞給函數的數組總是佔用2個參數。一個用於指向數據的指針,另一個指向數組的長度。例如:
void write(uint8_t *buf, size_t bufLen, size_t writeLen);
我考慮這些開關使用std::array
(在C++ 11引入)。這很有吸引力,因爲它可以跟蹤自己的長度,但不會進行任何分配。它看起來像相當於將
template<size_t N> void write(array<uint8_t, N> *buf, size_t writeLen);
如果我的代碼最終調用write
與10不同大小的數組,該編譯器最終確定10層不同的功能呢?這似乎可能特別不好,如果我定義一個函數,它有兩個(或更多)陣列,該函數具有在2個參數(每個陣列的尺寸),以作爲模板:
template<size_t N, size_t M>
void readWrite(array<uint8_t, N> *readBuf,
array<uint8_t, M> *writeBuf, size_t writeLen);