我需要使用庫提供的一些低級別C函數來包裝它們並提供「更高級別的層」。在這種情況下,我的問題是獲取包含在緩衝區中的數據,並且至少要學會如何正確地做到這一點,我想知道您認爲在C++ 03中做什麼以及在C + +11。我正在Red Hat Linux下工作,使用GCC 4.4.7(所以不是真正的C++ 11兼容,https://gcc.gnu.org/gcc-4.4/cxx0x_status.html)。從數組轉換爲向量 - 與C庫的接口
這裏是什麼,我試圖做一個片段:
#define DATA_BLOCKS 4096 // the numbers of 16-bit words within the buffer
std::vector<uint16_t> myClass::getData()
{
uint16_t buffer[DATA_BLOCKS];
getDataBuf(fd, dma, am, buffer[]); //C-function provided by the library
// pushing buffer content into vector
std::vector <uint16_t> myData;
for(int i=0; i<DATA_BLOCKS; i++)
myData.pushback(buffer[i]);
return myData;
}
在我提供的鏈接,我無法找到,如果它繼續像在C++ 11返回一個好主意'整個'矢量。
對於一個向量,是否有一個最好的方法來填充'myData'比在循環中使用方法'pushback()'?
所以,我會喜歡使用std :: array,但我的GCC版本沒有。我爲g ++提供了標誌'-std = C++ 0x',以確保使用最接近可能的C++ 11兼容(即使離它很遠)的東西。 – Paradox
另一方面,如果你願意,我想對你的第一個方法做一些解釋,因爲即使你稱之爲「安全」,也不知道如何理解引用到第一種情況的數組部分O_o – Paradox
只是複製/粘貼的一個愚蠢的錯誤,但在你的第二個例子中,不應該有'return') – Paradox